Browse Source

remove cruft from src/runtime

master
Julian Noble 3 months ago
parent
commit
0604f73eff
  1. BIN
      src/runtime/libtcl9.0b1.zip
  2. 711
      src/runtime/tcl_library/auto.tcl
  3. 4551
      src/runtime/tcl_library/clock.tcl
  4. 746
      src/runtime/tcl_library/cookiejar/cookiejar.tcl
  5. 292
      src/runtime/tcl_library/cookiejar/idna.tcl
  6. 3
      src/runtime/tcl_library/cookiejar/pkgIndex.tcl
  7. BIN
      src/runtime/tcl_library/cookiejar/public_suffix_list.dat.gz
  8. 12
      src/runtime/tcl_library/dde/pkgIndex.tcl
  9. BIN
      src/runtime/tcl_library/dde/tcl9dde14.dll
  10. 20
      src/runtime/tcl_library/encoding/ascii.enc
  11. 1516
      src/runtime/tcl_library/encoding/big5.enc
  12. 1584
      src/runtime/tcl_library/encoding/cns11643.enc
  13. 20
      src/runtime/tcl_library/encoding/cp1250.enc
  14. 20
      src/runtime/tcl_library/encoding/cp1251.enc
  15. 20
      src/runtime/tcl_library/encoding/cp1252.enc
  16. 20
      src/runtime/tcl_library/encoding/cp1253.enc
  17. 20
      src/runtime/tcl_library/encoding/cp1254.enc
  18. 20
      src/runtime/tcl_library/encoding/cp1255.enc
  19. 20
      src/runtime/tcl_library/encoding/cp1256.enc
  20. 20
      src/runtime/tcl_library/encoding/cp1257.enc
  21. 20
      src/runtime/tcl_library/encoding/cp1258.enc
  22. 20
      src/runtime/tcl_library/encoding/cp437.enc
  23. 20
      src/runtime/tcl_library/encoding/cp737.enc
  24. 20
      src/runtime/tcl_library/encoding/cp775.enc
  25. 20
      src/runtime/tcl_library/encoding/cp850.enc
  26. 20
      src/runtime/tcl_library/encoding/cp852.enc
  27. 20
      src/runtime/tcl_library/encoding/cp855.enc
  28. 20
      src/runtime/tcl_library/encoding/cp857.enc
  29. 20
      src/runtime/tcl_library/encoding/cp860.enc
  30. 20
      src/runtime/tcl_library/encoding/cp861.enc
  31. 20
      src/runtime/tcl_library/encoding/cp862.enc
  32. 20
      src/runtime/tcl_library/encoding/cp863.enc
  33. 20
      src/runtime/tcl_library/encoding/cp864.enc
  34. 20
      src/runtime/tcl_library/encoding/cp865.enc
  35. 20
      src/runtime/tcl_library/encoding/cp866.enc
  36. 20
      src/runtime/tcl_library/encoding/cp869.enc
  37. 20
      src/runtime/tcl_library/encoding/cp874.enc
  38. 801
      src/runtime/tcl_library/encoding/cp932.enc
  39. 2162
      src/runtime/tcl_library/encoding/cp936.enc
  40. 2128
      src/runtime/tcl_library/encoding/cp949.enc
  41. 1499
      src/runtime/tcl_library/encoding/cp950.enc
  42. 20
      src/runtime/tcl_library/encoding/dingbats.enc
  43. 20
      src/runtime/tcl_library/encoding/ebcdic.enc
  44. 1397
      src/runtime/tcl_library/encoding/euc-cn.enc
  45. 1353
      src/runtime/tcl_library/encoding/euc-jp.enc
  46. 1533
      src/runtime/tcl_library/encoding/euc-kr.enc
  47. 1414
      src/runtime/tcl_library/encoding/gb12345.enc
  48. 20
      src/runtime/tcl_library/encoding/gb1988.enc
  49. 1380
      src/runtime/tcl_library/encoding/gb2312-raw.enc
  50. 1397
      src/runtime/tcl_library/encoding/gb2312.enc
  51. 12
      src/runtime/tcl_library/encoding/iso2022-jp.enc
  52. 7
      src/runtime/tcl_library/encoding/iso2022-kr.enc
  53. 14
      src/runtime/tcl_library/encoding/iso2022.enc
  54. 20
      src/runtime/tcl_library/encoding/iso8859-1.enc
  55. 20
      src/runtime/tcl_library/encoding/iso8859-10.enc
  56. 20
      src/runtime/tcl_library/encoding/iso8859-11.enc
  57. 20
      src/runtime/tcl_library/encoding/iso8859-13.enc
  58. 20
      src/runtime/tcl_library/encoding/iso8859-14.enc
  59. 20
      src/runtime/tcl_library/encoding/iso8859-15.enc
  60. 20
      src/runtime/tcl_library/encoding/iso8859-16.enc
  61. 20
      src/runtime/tcl_library/encoding/iso8859-2.enc
  62. 20
      src/runtime/tcl_library/encoding/iso8859-3.enc
  63. 20
      src/runtime/tcl_library/encoding/iso8859-4.enc
  64. 20
      src/runtime/tcl_library/encoding/iso8859-5.enc
  65. 20
      src/runtime/tcl_library/encoding/iso8859-6.enc
  66. 20
      src/runtime/tcl_library/encoding/iso8859-7.enc
  67. 20
      src/runtime/tcl_library/encoding/iso8859-8.enc
  68. 20
      src/runtime/tcl_library/encoding/iso8859-9.enc
  69. 20
      src/runtime/tcl_library/encoding/jis0201.enc
  70. 1319
      src/runtime/tcl_library/encoding/jis0208.enc
  71. 1159
      src/runtime/tcl_library/encoding/jis0212.enc
  72. 20
      src/runtime/tcl_library/encoding/koi8-r.enc
  73. 20
      src/runtime/tcl_library/encoding/koi8-u.enc
  74. 1516
      src/runtime/tcl_library/encoding/ksc5601.enc
  75. 20
      src/runtime/tcl_library/encoding/macCentEuro.enc
  76. 20
      src/runtime/tcl_library/encoding/macCroatian.enc
  77. 20
      src/runtime/tcl_library/encoding/macCyrillic.enc
  78. 20
      src/runtime/tcl_library/encoding/macDingbats.enc
  79. 20
      src/runtime/tcl_library/encoding/macGreek.enc
  80. 20
      src/runtime/tcl_library/encoding/macIceland.enc
  81. 785
      src/runtime/tcl_library/encoding/macJapan.enc
  82. 20
      src/runtime/tcl_library/encoding/macRoman.enc
  83. 20
      src/runtime/tcl_library/encoding/macRomania.enc
  84. 20
      src/runtime/tcl_library/encoding/macThai.enc
  85. 20
      src/runtime/tcl_library/encoding/macTurkish.enc
  86. 20
      src/runtime/tcl_library/encoding/macUkraine.enc
  87. 690
      src/runtime/tcl_library/encoding/shiftjis.enc
  88. 20
      src/runtime/tcl_library/encoding/symbol.enc
  89. 20
      src/runtime/tcl_library/encoding/tis-620.enc
  90. 25
      src/runtime/tcl_library/foreachline.tcl
  91. 335
      src/runtime/tcl_library/history.tcl
  92. 5515
      src/runtime/tcl_library/http/http.tcl
  93. 2
      src/runtime/tcl_library/http/pkgIndex.tcl
  94. 780
      src/runtime/tcl_library/init.tcl
  95. 247
      src/runtime/tcl_library/install.tcl
  96. 40
      src/runtime/tcl_library/license.terms
  97. 19
      src/runtime/tcl_library/manifest.txt
  98. 1343
      src/runtime/tcl_library/msgcat/msgcat.tcl
  99. 2
      src/runtime/tcl_library/msgcat/pkgIndex.tcl
  100. 49
      src/runtime/tcl_library/msgs/af.msg
  101. Some files were not shown because too many files have changed in this diff Show More

BIN
src/runtime/libtcl9.0b1.zip

Binary file not shown.

711
src/runtime/tcl_library/auto.tcl

@ -1,711 +0,0 @@
# auto.tcl --
#
# utility procs formerly in init.tcl dealing with auto execution of commands
# and can be auto loaded themselves.
#
# Copyright © 1991-1993 The Regents of the University of California.
# Copyright © 1994-1998 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# auto_reset --
#
# Destroy all cached information for auto-loading and auto-execution, so that
# the information gets recomputed the next time it's needed. Also delete any
# commands that are listed in the auto-load index.
#
# Arguments:
# None.
proc auto_reset {} {
global auto_execs auto_index auto_path
if {[array exists auto_index]} {
foreach cmdName [array names auto_index] {
set fqcn [namespace which $cmdName]
if {$fqcn eq ""} {
continue
}
rename $fqcn {}
}
}
unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath
if {[catch {llength $auto_path}]} {
set auto_path [list [info library]]
} elseif {[info library] ni $auto_path} {
lappend auto_path [info library]
}
}
# tcl_findLibrary --
#
# This is a utility for extensions that searches for a library directory
# using a canonical searching algorithm. A side effect is to source the
# initialization script and set a global library variable.
#
# Arguments:
# basename Prefix of the directory name, (e.g., "tk")
# version Version number of the package, (e.g., "8.0")
# patch Patchlevel of the package, (e.g., "8.0.3")
# initScript Initialization script to source (e.g., tk.tcl)
# enVarName environment variable to honor (e.g., TK_LIBRARY)
# varName Global variable to set when done (e.g., tk_library)
proc tcl_findLibrary {basename version patch initScript enVarName varName} {
upvar #0 $varName the_library
global auto_path env tcl_platform
set dirs {}
set errors {}
# The C application may have hardwired a path, which we honor
if {[info exists the_library] && $the_library ne ""} {
lappend dirs $the_library
} else {
# Do the canonical search
# 1. From an environment variable, if it exists. Placing this first
# gives the end-user ultimate control to work-around any bugs, or
# to customize.
if {[info exists env($enVarName)]} {
lappend dirs $env($enVarName)
}
catch {
set found 0
set root [zipfs root]
set mountpoint [file join $root lib $basename]
lappend dirs [file join $root app ${basename}_library]
lappend dirs [file join $root lib ${basename} ${basename}_library]
lappend dirs [file join $root lib ${basename}]
if {![zipfs exists [file join $root app ${basename}_library]] \
&& ![zipfs exists $mountpoint]} {
set found 0
foreach pkgdat [info loaded] {
lassign $pkgdat dllfile dllpkg
if {$dllpkg ne $basename} continue
if {$dllfile eq {}} {
# Loaded statically
break
}
set found 1
zipfs mount $dllfile $mountpoint
break
}
if {!$found} {
set paths {}
if {![catch {::${basename}::pkgconfig get libdir,runtime} dir]} {
lappend paths $dir
} else {
catch {lappend paths [::tcl::pkgconfig get libdir,runtime]}
}
if {![catch {::${basename}::pkgconfig get bindir,runtime} dir]} {
lappend paths $dir
} else {
catch {lappend paths [::tcl::pkgconfig get bindir,runtime]}
}
if {[catch {::${basename}::pkgconfig get dllfile,runtime} dllfile]} {
set dllfile "libtcl9${basename}${version}[info sharedlibextension]"
}
set dir [file dirname [file join [pwd] [info nameofexecutable]]]
lappend paths $dir
lappend paths [file join [file dirname $dir] lib]
foreach path $paths {
set archive [file join $path $dllfile]
if {![file exists $archive]} {
continue
}
zipfs mount $archive $mountpoint
if {[zipfs exists [file join $mountpoint ${basename}_library $initScript]]} {
lappend dirs [file join $mountpoint ${basename}_library]
set found 1
break
} elseif {[zipfs exists [file join $mountpoint $initScript]]} {
lappend dirs [file join $mountpoint $initScript]
set found 1
break
} else {
catch {zipfs unmount $mountpoint}
}
}
}
}
}
# 2. In the package script directory registered within the
# configuration of the package itself.
catch {
lappend dirs [::${basename}::pkgconfig get scriptdir,runtime]
}
# 3. Relative to auto_path directories. This checks relative to the
# Tcl library as well as allowing loading of libraries added to the
# auto_path that is not relative to the core library or binary paths.
foreach d $auto_path {
lappend dirs [file join $d $basename$version]
if {$tcl_platform(platform) eq "unix"
&& $tcl_platform(os) eq "Darwin"} {
# 4. On MacOSX, check the Resources/Scripts subdir too
lappend dirs [file join $d $basename$version Resources Scripts]
}
}
# 3. Various locations relative to the executable
# ../lib/foo1.0 (From bin directory in install hierarchy)
# ../../lib/foo1.0 (From bin/arch directory in install hierarchy)
# ../library (From unix directory in build hierarchy)
#
# Remaining locations are out of date (when relevant, they ought to be
# covered by the $::auto_path seach above) and disabled.
#
# ../../library (From unix/arch directory in build hierarchy)
# ../../foo1.0.1/library
# (From unix directory in parallel build hierarchy)
# ../../../foo1.0.1/library
# (From unix/arch directory in parallel build hierarchy)
set parentDir [file dirname [file dirname [info nameofexecutable]]]
set grandParentDir [file dirname $parentDir]
lappend dirs [file join $parentDir lib $basename$version]
lappend dirs [file join $grandParentDir lib $basename$version]
lappend dirs [file join $parentDir library]
if {0} {
lappend dirs [file join $grandParentDir library]
lappend dirs [file join $grandParentDir $basename$patch library]
lappend dirs [file join [file dirname $grandParentDir] \
$basename$patch library]
}
}
# make $dirs unique, preserving order
array set seen {}
foreach i $dirs {
# Make sure $i is unique under normalization. Avoid repeated [source].
if {[interp issafe]} {
# Safe interps have no [file normalize].
set norm $i
} else {
set norm [file normalize $i]
}
if {[info exists seen($norm)]} {
continue
}
set seen($norm) {}
set the_library $i
set file [file join $i $initScript]
# source everything when in a safe interpreter because we have a
# source command, but no file exists command
if {[interp issafe] || [file exists $file]} {
if {![catch {uplevel #0 [list source $file]} msg opts]} {
return
}
append errors "$file: $msg\n"
append errors [dict get $opts -errorinfo]\n
}
}
unset -nocomplain the_library
set msg "Can't find a usable $initScript in the following directories: \n"
append msg " $dirs\n\n"
append msg "$errors\n\n"
append msg "This probably means that $basename wasn't installed properly.\n"
error $msg
}
# ----------------------------------------------------------------------
# auto_mkindex
# ----------------------------------------------------------------------
# The following procedures are used to generate the tclIndex file from Tcl
# source files. They use a special safe interpreter to parse Tcl source
# files, writing out index entries as "proc" commands are encountered. This
# implementation won't work in a safe interpreter, since a safe interpreter
# can't create the special parser and mess with its commands.
if {[interp issafe]} {
return ;# Stop sourcing the file here
}
# auto_mkindex --
# Regenerate a tclIndex file from Tcl source files. Takes as argument the
# name of the directory in which the tclIndex file is to be placed, followed
# by any number of glob patterns to use in that directory to locate all of the
# relevant files.
#
# Arguments:
# dir - Name of the directory in which to create an index.
# args - Any number of additional arguments giving the names of files
# within dir. If no additional are given auto_mkindex will look
# for *.tcl.
proc auto_mkindex {dir args} {
if {[interp issafe]} {
error "can't generate index within safe interpreter"
}
set oldDir [pwd]
cd $dir
append index "# Tcl autoload index file, version 2.0\n"
append index "# This file is generated by the \"auto_mkindex\" command\n"
append index "# and sourced to set up indexing information for one or\n"
append index "# more commands. Typically each line is a command that\n"
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
if {![llength $args]} {
set args *.tcl
}
auto_mkindex_parser::init
foreach file [lsort [glob -- {*}$args]] {
try {
append index [auto_mkindex_parser::mkindex $file]
} on error {msg opts} {
cd $oldDir
return -options $opts $msg
}
}
auto_mkindex_parser::cleanup
set fid [open "tclIndex" w]
fconfigure $fid -encoding utf-8 -translation lf
puts -nonewline $fid $index
close $fid
cd $oldDir
}
# Original version of auto_mkindex that just searches the source code for
# "proc" at the beginning of the line.
proc auto_mkindex_old {dir args} {
set oldDir [pwd]
cd $dir
set dir [pwd]
append index "# Tcl autoload index file, version 2.0\n"
append index "# This file is generated by the \"auto_mkindex\" command\n"
append index "# and sourced to set up indexing information for one or\n"
append index "# more commands. Typically each line is a command that\n"
append index "# sets an element in the auto_index array, where the\n"
append index "# element name is the name of a command and the value is\n"
append index "# a script that loads the command.\n\n"
if {![llength $args]} {
set args *.tcl
}
foreach file [lsort [glob -- {*}$args]] {
set f ""
set error [catch {
set f [open $file]
fconfigure $f -encoding utf-8 -eofchar \x1A
while {[gets $f line] >= 0} {
if {[regexp {^proc[ ]+([^ ]*)} $line match procName]} {
set procName [lindex [auto_qualify $procName "::"] 0]
append index "set [list auto_index($procName)]"
append index " \[list source \[file join \$dir [list $file]\]\]\n"
}
}
close $f
} msg opts]
if {$error} {
catch {close $f}
cd $oldDir
return -options $opts $msg
}
}
set f ""
set error [catch {
set f [open tclIndex w]
fconfigure $f -encoding utf-8 -translation lf
puts -nonewline $f $index
close $f
cd $oldDir
} msg opts]
if {$error} {
catch {close $f}
cd $oldDir
error $msg $info $code
return -options $opts $msg
}
}
# Create a safe interpreter that can be used to parse Tcl source files
# generate a tclIndex file for autoloading. This interp contains commands for
# things that need index entries. Each time a command is executed, it writes
# an entry out to the index file.
namespace eval auto_mkindex_parser {
variable parser "" ;# parser used to build index
variable index "" ;# maintains index as it is built
variable scriptFile "" ;# name of file being processed
variable contextStack "" ;# stack of namespace scopes
variable imports "" ;# keeps track of all imported cmds
variable initCommands ;# list of commands that create aliases
if {![info exists initCommands]} {
set initCommands [list]
}
proc init {} {
variable parser
variable initCommands
if {![interp issafe]} {
set parser [interp create -safe]
$parser hide info
$parser hide rename
$parser hide proc
$parser hide namespace
$parser hide eval
$parser hide puts
foreach ns [$parser invokehidden namespace children ::] {
# MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN!
if {$ns eq "::tcl"} continue
$parser invokehidden namespace delete $ns
}
foreach cmd [$parser invokehidden info commands ::*] {
$parser invokehidden rename $cmd {}
}
$parser invokehidden proc unknown {args} {}
# We'll need access to the "namespace" command within the
# interp. Put it back, but move it out of the way.
$parser expose namespace
$parser invokehidden rename namespace _%@namespace
$parser expose eval
$parser invokehidden rename eval _%@eval
# Install all the registered pseudo-command implementations
foreach cmd $initCommands {
eval $cmd
}
}
}
proc cleanup {} {
variable parser
interp delete $parser
unset parser
}
}
# auto_mkindex_parser::mkindex --
#
# Used by the "auto_mkindex" command to create a "tclIndex" file for the given
# Tcl source file. Executes the commands in the file, and handles things like
# the "proc" command by adding an entry for the index file. Returns a string
# that represents the index file.
#
# Arguments:
# file Name of Tcl source file to be indexed.
proc auto_mkindex_parser::mkindex {file} {
variable parser
variable index
variable scriptFile
variable contextStack
variable imports
set scriptFile $file
set fid [open $file]
fconfigure $fid -encoding utf-8 -eofchar \x1A
set contents [read $fid]
close $fid
# There is one problem with sourcing files into the safe interpreter:
# references like "$x" will fail since code is not really being executed
# and variables do not really exist. To avoid this, we replace all $ with
# \0 (literally, the null char) later, when getting proc names we will
# have to reverse this replacement, in case there were any $ in the proc
# name. This will cause a problem if somebody actually tries to have a \0
# in their proc name. Too bad for them.
set contents [string map [list \$ \0] $contents]
set index ""
set contextStack ""
set imports ""
$parser eval $contents
foreach name $imports {
catch {$parser eval [list _%@namespace forget $name]}
}
return $index
}
# auto_mkindex_parser::hook command
#
# Registers a Tcl command to evaluate when initializing the child interpreter
# used by the mkindex parser. The command is evaluated in the parent
# interpreter, and can use the variable auto_mkindex_parser::parser to get to
# the child
proc auto_mkindex_parser::hook {cmd} {
variable initCommands
lappend initCommands $cmd
}
# auto_mkindex_parser::childhook command
#
# Registers a Tcl command to evaluate when initializing the child interpreter
# used by the mkindex parser. The command is evaluated in the child
# interpreter.
proc auto_mkindex_parser::childhook {cmd} {
variable initCommands
# The $parser variable is defined to be the name of the child interpreter
# when this command is used later.
lappend initCommands "\$parser eval [list $cmd]"
}
# auto_mkindex_parser::command --
#
# Registers a new command with the "auto_mkindex_parser" interpreter that
# parses Tcl files. These commands are fake versions of things like the
# "proc" command. When you execute them, they simply write out an entry to a
# "tclIndex" file for auto-loading.
#
# This procedure allows extensions to register their own commands with the
# auto_mkindex facility. For example, a package like [incr Tcl] might
# register a "class" command so that class definitions could be added to a
# "tclIndex" file for auto-loading.
#
# Arguments:
# name Name of command recognized in Tcl files.
# arglist Argument list for command.
# body Implementation of command to handle indexing.
proc auto_mkindex_parser::command {name arglist body} {
hook [list auto_mkindex_parser::commandInit $name $arglist $body]
}
# auto_mkindex_parser::commandInit --
#
# This does the actual work set up by auto_mkindex_parser::command. This is
# called when the interpreter used by the parser is created.
#
# Arguments:
# name Name of command recognized in Tcl files.
# arglist Argument list for command.
# body Implementation of command to handle indexing.
proc auto_mkindex_parser::commandInit {name arglist body} {
variable parser
set ns [namespace qualifiers $name]
set tail [namespace tail $name]
if {$ns eq ""} {
set fakeName [namespace current]::_%@fake_$tail
} else {
set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
}
proc $fakeName $arglist $body
# YUK! Tcl won't let us alias fully qualified command names, so we can't
# handle names like "::itcl::class". Instead, we have to build procs with
# the fully qualified names, and have the procs point to the aliases.
if {[string match *::* $name]} {
set exportCmd [list _%@namespace export [namespace tail $name]]
$parser eval [list _%@namespace eval $ns $exportCmd]
# The following proc definition does not work if you want to tolerate
# space or something else diabolical in the procedure name, (i.e.,
# space in $alias). The following does not work:
# "_%@eval {$alias} \$args"
# because $alias gets concat'ed to $args. The following does not work
# because $cmd is somehow undefined
# "set cmd {$alias} \; _%@eval {\$cmd} \$args"
# A gold star to someone that can make test autoMkindex-3.3 work
# properly
set alias [namespace tail $fakeName]
$parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
$parser alias $alias $fakeName
} else {
$parser alias $name $fakeName
}
return
}
# auto_mkindex_parser::fullname --
#
# Used by commands like "proc" within the auto_mkindex parser. Returns the
# qualified namespace name for the "name" argument. If the "name" does not
# start with "::", elements are added from the current namespace stack to
# produce a qualified name. Then, the name is examined to see whether or not
# it should really be qualified. If the name has more than the leading "::",
# it is returned as a fully qualified name. Otherwise, it is returned as a
# simple name. That way, the Tcl autoloader will recognize it properly.
#
# Arguments:
# name - Name that is being added to index.
proc auto_mkindex_parser::fullname {name} {
variable contextStack
if {![string match ::* $name]} {
foreach ns $contextStack {
set name "${ns}::$name"
if {[string match ::* $name]} {
break
}
}
}
if {[namespace qualifiers $name] eq ""} {
set name [namespace tail $name]
} elseif {![string match ::* $name]} {
set name "::$name"
}
# Earlier, mkindex replaced all $'s with \0. Now, we have to reverse that
# replacement.
return [string map [list \0 \$] $name]
}
# auto_mkindex_parser::indexEntry --
#
# Used by commands like "proc" within the auto_mkindex parser to add a
# correctly-quoted entry to the index. This is shared code so it is done
# *right*, in one place.
#
# Arguments:
# name - Name that is being added to index.
proc auto_mkindex_parser::indexEntry {name} {
variable index
variable scriptFile
# We convert all metacharacters to their backslashed form, and pre-split
# the file name that we know about (which will be a proper list, and so
# correctly quoted).
set name [string range [list \}[fullname $name]] 2 end]
set filenameParts [file split $scriptFile]
append index [format \
{set auto_index(%s) [list source [file join $dir %s]]%s} \
$name $filenameParts \n]
return
}
if {[llength $::auto_mkindex_parser::initCommands]} {
return
}
# Register all of the procedures for the auto_mkindex parser that will build
# the "tclIndex" file.
# AUTO MKINDEX: proc name arglist body
# Adds an entry to the auto index list for the given procedure name.
auto_mkindex_parser::command proc {name args} {
indexEntry $name
}
# Conditionally add support for Tcl byte code files. There are some tricky
# details here. First, we need to get the tbcload library initialized in the
# current interpreter. We cannot load tbcload into the child until we have
# done so because it needs access to the tcl_patchLevel variable. Second,
# because the package index file may defer loading the library until we invoke
# a command, we need to explicitly invoke auto_load to force it to be loaded.
# This should be a noop if the package has already been loaded
auto_mkindex_parser::hook {
try {
package require tbcload
} on error {} {
# OK, don't have it so do nothing
} on ok {} {
if {[namespace which -command tbcload::bcproc] eq ""} {
auto_load tbcload::bcproc
}
load {} tbcload $auto_mkindex_parser::parser
# AUTO MKINDEX: tbcload::bcproc name arglist body
# Adds an entry to the auto index list for the given precompiled
# procedure name.
auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
indexEntry $name
}
}
}
# AUTO MKINDEX: namespace eval name command ?arg arg...?
# Adds the namespace name onto the context stack and evaluates the associated
# body of commands.
#
# AUTO MKINDEX: namespace import ?-force? pattern ?pattern...?
# Performs the "import" action in the parser interpreter. This is important
# for any commands contained in a namespace that affect the index. For
# example, a script may say "itcl::class ...", or it may import "itcl::*" and
# then say "class ...". This procedure does the import operation, but keeps
# track of imported patterns so we can remove the imports later.
auto_mkindex_parser::command namespace {op args} {
switch -- $op {
eval {
variable parser
variable contextStack
set name [lindex $args 0]
set args [lrange $args 1 end]
set contextStack [linsert $contextStack 0 $name]
$parser eval [list _%@namespace eval $name] $args
set contextStack [lrange $contextStack 1 end]
}
import {
variable parser
variable imports
foreach pattern $args {
if {$pattern ne "-force"} {
lappend imports $pattern
}
}
catch {$parser eval "_%@namespace import $args"}
}
ensemble {
variable parser
variable contextStack
if {[lindex $args 0] eq "create"} {
set name ::[join [lreverse $contextStack] ::]
catch {
set name [dict get [lrange $args 1 end] -command]
if {![string match ::* $name]} {
set name ::[join [lreverse $contextStack] ::]$name
}
regsub -all ::+ $name :: name
}
# create artificial proc to force an entry in the tclIndex
$parser eval [list ::proc $name {} {}]
}
}
}
}
# AUTO MKINDEX: oo::class create name ?definition?
# Adds an entry to the auto index list for the given class name.
auto_mkindex_parser::command oo::class {op name {body ""}} {
if {$op eq "create"} {
indexEntry $name
}
}
auto_mkindex_parser::command class {op name {body ""}} {
if {$op eq "create"} {
indexEntry $name
}
}
return

4551
src/runtime/tcl_library/clock.tcl

File diff suppressed because it is too large Load Diff

746
src/runtime/tcl_library/cookiejar/cookiejar.tcl

@ -1,746 +0,0 @@
# cookiejar.tcl --
#
# Implementation of an HTTP cookie storage engine using SQLite. The
# implementation is done as a TclOO class, and includes a punycode
# encoder and decoder (though only the encoder is currently used).
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
# Dependencies
package require Tcl 8.6-
package require http 2.8.4
package require sqlite3
package require tcl::idna 1.0
#
# Configuration for the cookiejar package, plus basic support procedures.
#
# This is the class that we are creating
if {![llength [info commands ::http::cookiejar]]} {
::oo::class create ::http::cookiejar
}
namespace eval [info object namespace ::http::cookiejar] {
proc setInt {*var val} {
upvar 1 ${*var} var
if {[catch {incr dummy $val} msg]} {
return -code error $msg
}
set var $val
}
proc setInterval {trigger *var val} {
upvar 1 ${*var} var
if {![string is integer -strict $val] || $val < 1} {
return -code error "expected positive integer but got \"$val\""
}
set var $val
{*}$trigger
}
proc setBool {*var val} {
upvar 1 ${*var} var
if {[catch {if {$val} {}} msg]} {
return -code error $msg
}
set var [expr {!!$val}]
}
proc setLog {*var val} {
upvar 1 ${*var} var
set var [::tcl::prefix match -message "log level" \
{debug info warn error} $val]
}
# Keep this in sync with pkgIndex.tcl and with the install directories in
# Makefiles
variable version 0.2.0
variable domainlist \
https://publicsuffix.org/list/public_suffix_list.dat
variable domainfile \
[file join [file dirname [info script]] public_suffix_list.dat.gz]
# The list is directed to from http://publicsuffix.org/list/
variable loglevel info
variable vacuumtrigger 200
variable retainlimit 100
variable offline false
variable purgeinterval 60000
variable refreshinterval 10000000
variable domaincache {}
# Some support procedures, none particularly useful in general
namespace eval support {
# Set up a logger if the http package isn't actually loaded yet.
if {![llength [info commands ::http::Log]]} {
proc ::http::Log args {
# Do nothing by default...
}
}
namespace export *
proc locn {secure domain path {key ""}} {
if {$key eq ""} {
format "%s://%s%s" [expr {$secure?"https":"http"}] \
[::tcl::idna encode $domain] $path
} else {
format "%s://%s%s?%s" \
[expr {$secure?"https":"http"}] [::tcl::idna encode $domain] \
$path $key
}
}
proc splitDomain domain {
set pieces [split $domain "."]
for {set i [llength $pieces]} {[incr i -1] >= 0} {} {
lappend result [join [lrange $pieces $i end] "."]
}
return $result
}
proc splitPath path {
set pieces [split [string trimleft $path "/"] "/"]
set result /
for {set j 0} {$j < [llength $pieces]} {incr j} {
lappend result /[join [lrange $pieces 0 $j] "/"]
}
return $result
}
proc isoNow {} {
set ms [clock milliseconds]
set ts [expr {$ms / 1000}]
set ms [format %03d [expr {$ms % 1000}]]
clock format $ts -format "%Y%m%dT%H%M%S.${ms}Z" -gmt 1
}
proc log {level msg args} {
namespace upvar [info object namespace ::http::cookiejar] \
loglevel loglevel
set who [uplevel 1 self class]
set mth [uplevel 1 self method]
set map {debug 0 info 1 warn 2 error 3}
if {[string map $map $level] >= [string map $map $loglevel]} {
set msg [format $msg {*}$args]
set LVL [string toupper $level]
::http::Log "[isoNow] $LVL $who $mth - $msg"
}
}
}
}
# Now we have enough information to provide the package.
package provide cookiejar \
[set [info object namespace ::http::cookiejar]::version]
# The implementation of the cookiejar package
::oo::define ::http::cookiejar {
self {
method configure {{optionName "\x00\x00"} {optionValue "\x00\x00"}} {
set tbl {
-domainfile {domainfile set}
-domainlist {domainlist set}
-domainrefresh {refreshinterval setInterval}
-loglevel {loglevel setLog}
-offline {offline setBool}
-purgeold {purgeinterval setInterval}
-retain {retainlimit setInt}
-vacuumtrigger {vacuumtrigger setInt}
}
dict lappend tbl -domainrefresh [namespace code {
my IntervalTrigger PostponeRefresh
}]
dict lappend tbl -purgeold [namespace code {
my IntervalTrigger PostponePurge
}]
if {$optionName eq "\x00\x00"} {
return [dict keys $tbl]
}
set opt [::tcl::prefix match -message "option" \
[dict keys $tbl] $optionName]
set setter [lassign [dict get $tbl $opt] varname]
namespace upvar [namespace current] $varname var
if {$optionValue ne "\x00\x00"} {
{*}$setter var $optionValue
}
return $var
}
method IntervalTrigger {method} {
# TODO: handle subclassing
foreach obj [info class instances [self]] {
[info object namespace $obj]::my $method
}
}
}
variable purgeTimer deletions refreshTimer
constructor {{path ""}} {
namespace import [info object namespace [self class]]::support::*
if {$path eq ""} {
sqlite3 [namespace current]::db :memory:
set storeorigin "constructed cookie store in memory"
} else {
sqlite3 [namespace current]::db $path
db timeout 500
set storeorigin "loaded cookie store from $path"
}
set deletions 0
db transaction {
db eval {
--;# Store the persistent cookies in this table.
--;# Deletion policy: once they expire, or if explicitly
--;# killed.
CREATE TABLE IF NOT EXISTS persistentCookies (
id INTEGER PRIMARY KEY,
secure INTEGER NOT NULL,
domain TEXT NOT NULL COLLATE NOCASE,
path TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
originonly INTEGER NOT NULL,
expiry INTEGER NOT NULL,
lastuse INTEGER NOT NULL,
creation INTEGER NOT NULL);
CREATE UNIQUE INDEX IF NOT EXISTS persistentUnique
ON persistentCookies (domain, path, key);
CREATE INDEX IF NOT EXISTS persistentLookup
ON persistentCookies (domain, path);
--;# Store the session cookies in this table.
--;# Deletion policy: at cookiejar instance deletion, if
--;# explicitly killed, or if the number of session cookies is
--;# too large and the cookie has not been used recently.
CREATE TEMP TABLE sessionCookies (
id INTEGER PRIMARY KEY,
secure INTEGER NOT NULL,
domain TEXT NOT NULL COLLATE NOCASE,
path TEXT NOT NULL,
key TEXT NOT NULL,
originonly INTEGER NOT NULL,
value TEXT NOT NULL,
lastuse INTEGER NOT NULL,
creation INTEGER NOT NULL);
CREATE UNIQUE INDEX sessionUnique
ON sessionCookies (domain, path, key);
CREATE INDEX sessionLookup ON sessionCookies (domain, path);
--;# View to allow for simple looking up of a cookie.
--;# Deletion policy: NOT SUPPORTED via this view.
CREATE TEMP VIEW cookies AS
SELECT id, domain, (
CASE originonly WHEN 1 THEN path ELSE '.' || path END
) AS path, key, value, secure, 1 AS persistent
FROM persistentCookies
UNION
SELECT id, domain, (
CASE originonly WHEN 1 THEN path ELSE '.' || path END
) AS path, key, value, secure, 0 AS persistent
FROM sessionCookies;
--;# Encoded domain permission policy; if forbidden is 1, no
--;# cookie may be ever set for the domain, and if forbidden
--;# is 0, cookies *may* be created for the domain (overriding
--;# the forbiddenSuper table).
--;# Deletion policy: normally not modified.
CREATE TABLE IF NOT EXISTS domains (
domain TEXT PRIMARY KEY NOT NULL,
forbidden INTEGER NOT NULL);
--;# Domains that may not have a cookie defined for direct
--;# child domains of them.
--;# Deletion policy: normally not modified.
CREATE TABLE IF NOT EXISTS forbiddenSuper (
domain TEXT PRIMARY KEY);
--;# When we last retrieved the domain list.
CREATE TABLE IF NOT EXISTS domainCacheMetadata (
id INTEGER PRIMARY KEY,
retrievalDate INTEGER,
installDate INTEGER);
}
set cookieCount "no"
db eval {
SELECT COUNT(*) AS cookieCount FROM persistentCookies
}
log info "%s with %s entries" $storeorigin $cookieCount
my PostponePurge
if {$path ne ""} {
if {[db exists {SELECT 1 FROM domains}]} {
my RefreshDomains
} else {
my InitDomainList
my PostponeRefresh
}
} else {
set data [my GetDomainListOffline metadata]
my InstallDomainData $data $metadata
my PostponeRefresh
}
}
}
method PostponePurge {} {
namespace upvar [info object namespace [self class]] \
purgeinterval interval
catch {after cancel $purgeTimer}
set purgeTimer [after $interval [namespace code {my PurgeCookies}]]
}
method PostponeRefresh {} {
namespace upvar [info object namespace [self class]] \
refreshinterval interval
catch {after cancel $refreshTimer}
set refreshTimer [after $interval [namespace code {my RefreshDomains}]]
}
method RefreshDomains {} {
# TODO: domain list refresh policy
my PostponeRefresh
}
method HttpGet {url {timeout 0} {maxRedirects 5}} {
for {set r 0} {$r < $maxRedirects} {incr r} {
set tok [::http::geturl $url -timeout $timeout]
try {
if {[::http::status $tok] eq "timeout"} {
return -code error "connection timed out"
} elseif {[::http::ncode $tok] == 200} {
return [::http::data $tok]
} elseif {[::http::ncode $tok] >= 400} {
return -code error [::http::error $tok]
} elseif {[dict exists [::http::meta $tok] Location]} {
set url [dict get [::http::meta $tok] Location]
continue
}
return -code error \
"unexpected state: [::http::code $tok]"
} finally {
::http::cleanup $tok
}
}
return -code error "too many redirects"
}
method GetDomainListOnline {metaVar} {
upvar 1 $metaVar meta
namespace upvar [info object namespace [self class]] \
domainlist url domaincache cache
lassign $cache when data
if {$when > [clock seconds] - 3600} {
log debug "using cached value created at %s" \
[clock format $when -format {%Y%m%dT%H%M%SZ} -gmt 1]
dict set meta retrievalDate $when
return $data
}
log debug "loading domain list from %s" $url
try {
set when [clock seconds]
set data [my HttpGet $url]
set cache [list $when $data]
# TODO: Should we use the Last-Modified header instead?
dict set meta retrievalDate $when
return $data
} on error msg {
log error "failed to fetch list of forbidden cookie domains from %s: %s" \
$url $msg
return {}
}
}
method GetDomainListOffline {metaVar} {
upvar 1 $metaVar meta
namespace upvar [info object namespace [self class]] \
domainfile filename
log debug "loading domain list from %s" $filename
try {
set f [open $filename]
try {
if {[string match *.gz $filename]} {
zlib push gunzip $f
}
fconfigure $f -encoding utf-8
dict set meta retrievalDate [file mtime $filename]
return [read $f]
} finally {
close $f
}
} on error {msg opt} {
log error "failed to read list of forbidden cookie domains from %s: %s" \
$filename $msg
return -options $opt $msg
}
}
method InitDomainList {} {
namespace upvar [info object namespace [self class]] \
offline offline
if {!$offline} {
try {
set data [my GetDomainListOnline metadata]
if {[string length $data]} {
my InstallDomainData $data $metadata
return
}
} on error {} {
log warn "attempting to fall back to built in version"
}
}
set data [my GetDomainListOffline metadata]
my InstallDomainData $data $metadata
}
method InstallDomainData {data meta} {
set n [db total_changes]
db transaction {
foreach line [split $data "\n"] {
if {[string trim $line] eq ""} {
continue
} elseif {[string match //* $line]} {
continue
} elseif {[string match !* $line]} {
set line [string range $line 1 end]
set idna [string tolower [::tcl::idna encode $line]]
set utf [::tcl::idna decode [string tolower $line]]
db eval {
INSERT OR REPLACE INTO domains (domain, forbidden)
VALUES ($utf, 0);
}
if {$idna ne $utf} {
db eval {
INSERT OR REPLACE INTO domains (domain, forbidden)
VALUES ($idna, 0);
}
}
} else {
if {[string match {\*.*} $line]} {
set line [string range $line 2 end]
set idna [string tolower [::tcl::idna encode $line]]
set utf [::tcl::idna decode [string tolower $line]]
db eval {
INSERT OR REPLACE INTO forbiddenSuper (domain)
VALUES ($utf);
}
if {$idna ne $utf} {
db eval {
INSERT OR REPLACE INTO forbiddenSuper (domain)
VALUES ($idna);
}
}
} else {
set idna [string tolower [::tcl::idna encode $line]]
set utf [::tcl::idna decode [string tolower $line]]
}
db eval {
INSERT OR REPLACE INTO domains (domain, forbidden)
VALUES ($utf, 1);
}
if {$idna ne $utf} {
db eval {
INSERT OR REPLACE INTO domains (domain, forbidden)
VALUES ($idna, 1);
}
}
}
if {$utf ne [::tcl::idna decode [string tolower $idna]]} {
log warn "mismatch in IDNA handling for %s (%d, %s, %s)" \
$idna $line $utf [::tcl::idna decode $idna]
}
}
dict with meta {
set installDate [clock seconds]
db eval {
INSERT OR REPLACE INTO domainCacheMetadata
(id, retrievalDate, installDate)
VALUES (1, $retrievalDate, $installDate);
}
}
}
set n [expr {[db total_changes] - $n}]
log info "constructed domain info with %d entries" $n
}
# This forces the rebuild of the domain data, loading it from
method forceLoadDomainData {} {
db transaction {
db eval {
DELETE FROM domains;
DELETE FROM forbiddenSuper;
INSERT OR REPLACE INTO domainCacheMetadata
(id, retrievalDate, installDate)
VALUES (1, -1, -1);
}
my InitDomainList
}
}
destructor {
catch {
after cancel $purgeTimer
}
catch {
after cancel $refreshTimer
}
catch {
db close
}
return
}
method GetCookiesForHostAndPath {listVar secure host path fullhost} {
upvar 1 $listVar result
log debug "check for cookies for %s" [locn $secure $host $path]
set exact [expr {$host eq $fullhost}]
db eval {
SELECT key, value FROM persistentCookies
WHERE domain = $host AND path = $path AND secure <= $secure
AND (NOT originonly OR domain = $fullhost)
AND originonly = $exact
} {
lappend result $key $value
db eval {
UPDATE persistentCookies SET lastuse = $now WHERE id = $id
}
}
set now [clock seconds]
db eval {
SELECT id, key, value FROM sessionCookies
WHERE domain = $host AND path = $path AND secure <= $secure
AND (NOT originonly OR domain = $fullhost)
AND originonly = $exact
} {
lappend result $key $value
db eval {
UPDATE sessionCookies SET lastuse = $now WHERE id = $id
}
}
}
method getCookies {proto host path} {
set result {}
set paths [splitPath $path]
if {[regexp {[^0-9.]} $host]} {
set domains [splitDomain [string tolower [::tcl::idna encode $host]]]
} else {
# Ugh, it's a numeric domain! Restrict it to just itself...
set domains [list $host]
}
set secure [string equal -nocase $proto "https"]
# Open question: how to move these manipulations into the database
# engine (if that's where they *should* be).
#
# Suggestion from kbk:
#LENGTH(theColumn) <= LENGTH($queryStr) AND
#SUBSTR(theColumn, LENGTH($queryStr) LENGTH(theColumn)+1) = $queryStr
#
# However, we instead do most of the work in Tcl because that lets us
# do the splitting exactly right, and it's far easier to work with
# strings in Tcl than in SQL.
db transaction {
foreach domain $domains {
foreach p $paths {
my GetCookiesForHostAndPath result $secure $domain $p $host
}
}
return $result
}
}
method BadDomain options {
if {![dict exists $options domain]} {
log error "no domain present in options"
return 0
}
dict with options {}
if {$domain ne $origin} {
log debug "cookie domain varies from origin (%s, %s)" \
$domain $origin
if {[string match .* $domain]} {
set dotd $domain
} else {
set dotd .$domain
}
if {![string equal -length [string length $dotd] \
[string reverse $dotd] [string reverse $origin]]} {
log warn "bad cookie: domain not suffix of origin"
return 1
}
}
if {![regexp {[^0-9.]} $domain]} {
if {$domain eq $origin} {
# May set for itself
return 0
}
log warn "bad cookie: for a numeric address"
return 1
}
db eval {
SELECT forbidden FROM domains WHERE domain = $domain
} {
if {$forbidden} {
log warn "bad cookie: for a forbidden address"
}
return $forbidden
}
if {[regexp {^[^.]+\.(.+)$} $domain -> super] && [db exists {
SELECT 1 FROM forbiddenSuper WHERE domain = $super
}]} then {
log warn "bad cookie: for a forbidden address"
return 1
}
return 0
}
# A defined extension point to allow users to easily impose extra policies
# on whether to accept cookies from a particular domain and path.
method policyAllow {operation domain path} {
return true
}
method storeCookie {options} {
db transaction {
if {[my BadDomain $options]} {
return
}
set now [clock seconds]
set persistent [dict exists $options expires]
dict with options {}
if {!$persistent} {
if {![my policyAllow session $domain $path]} {
log warn "bad cookie: $domain prohibited by user policy"
return
}
db eval {
INSERT OR REPLACE INTO sessionCookies (
secure, domain, path, key, value, originonly, creation,
lastuse)
VALUES ($secure, $domain, $path, $key, $value, $hostonly,
$now, $now);
DELETE FROM persistentCookies
WHERE domain = $domain AND path = $path AND key = $key
AND secure <= $secure AND originonly = $hostonly
}
incr deletions [db changes]
log debug "defined session cookie for %s" \
[locn $secure $domain $path $key]
} elseif {$expires < $now} {
if {![my policyAllow delete $domain $path]} {
log warn "bad cookie: $domain prohibited by user policy"
return
}
db eval {
DELETE FROM persistentCookies
WHERE domain = $domain AND path = $path AND key = $key
AND secure <= $secure AND originonly = $hostonly
}
set del [db changes]
db eval {
DELETE FROM sessionCookies
WHERE domain = $domain AND path = $path AND key = $key
AND secure <= $secure AND originonly = $hostonly
}
incr deletions [incr del [db changes]]
log debug "deleted %d cookies for %s" \
$del [locn $secure $domain $path $key]
} else {
if {![my policyAllow set $domain $path]} {
log warn "bad cookie: $domain prohibited by user policy"
return
}
db eval {
INSERT OR REPLACE INTO persistentCookies (
secure, domain, path, key, value, originonly, expiry,
creation, lastuse)
VALUES ($secure, $domain, $path, $key, $value, $hostonly,
$expires, $now, $now);
DELETE FROM sessionCookies
WHERE domain = $domain AND path = $path AND key = $key
AND secure <= $secure AND originonly = $hostonly
}
incr deletions [db changes]
log debug "defined persistent cookie for %s, expires at %s" \
[locn $secure $domain $path $key] \
[clock format $expires]
}
}
}
method PurgeCookies {} {
namespace upvar [info object namespace [self class]] \
vacuumtrigger trigger retainlimit retain
my PostponePurge
set now [clock seconds]
log debug "purging cookies that expired before %s" [clock format $now]
db transaction {
db eval {
DELETE FROM persistentCookies WHERE expiry < $now
}
incr deletions [db changes]
db eval {
DELETE FROM persistentCookies WHERE id IN (
SELECT id FROM persistentCookies ORDER BY lastuse ASC
LIMIT -1 OFFSET $retain)
}
incr deletions [db changes]
db eval {
DELETE FROM sessionCookies WHERE id IN (
SELECT id FROM sessionCookies ORDER BY lastuse
LIMIT -1 OFFSET $retain)
}
incr deletions [db changes]
}
# Once we've deleted a fair bit, vacuum the database. Must be done
# outside a transaction.
if {$deletions > $trigger} {
set deletions 0
log debug "vacuuming cookie database"
catch {
db eval {
VACUUM
}
}
}
}
forward Database db
method lookup {{host ""} {key ""}} {
set host [string tolower [::tcl::idna encode $host]]
db transaction {
if {$host eq ""} {
set result {}
db eval {
SELECT DISTINCT domain FROM cookies
ORDER BY domain
} {
lappend result [::tcl::idna decode [string tolower $domain]]
}
return $result
} elseif {$key eq ""} {
set result {}
db eval {
SELECT DISTINCT key FROM cookies
WHERE domain = $host
ORDER BY key
} {
lappend result $key
}
return $result
} else {
db eval {
SELECT value FROM cookies
WHERE domain = $host AND key = $key
LIMIT 1
} {
return $value
}
return -code error "no such key for that host"
}
}
}
}
# Local variables:
# mode: tcl
# fill-column: 78
# End:

292
src/runtime/tcl_library/cookiejar/idna.tcl

@ -1,292 +0,0 @@
# idna.tcl --
#
# Implementation of IDNA (Internationalized Domain Names for
# Applications) encoding/decoding system, built on a punycode engine
# developed directly from the code in RFC 3492, Appendix C (with
# substantial modifications).
#
# This implementation includes code from that RFC, translated to Tcl; the
# other parts are:
# Copyright © 2014 Donal K. Fellows
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
namespace eval ::tcl::idna {
namespace ensemble create -command puny -map {
encode punyencode
decode punydecode
}
namespace ensemble create -command ::tcl::idna -map {
encode IDNAencode
decode IDNAdecode
puny puny
version {::apply {{} {package present tcl::idna} ::}}
}
proc IDNAencode hostname {
set parts {}
# Split term from RFC 3490, Sec 3.1
foreach part [split $hostname "\x2E\u3002\uFF0E\uFF61"] {
if {[regexp {[^-A-Za-z0-9]} $part]} {
if {[regexp {[^-A-Za-z0-9\xA1-\uFFFF]} $part ch]} {
scan $ch %c c
if {$ch < "!" || $ch > "~"} {
set ch [format "\\u%04x" $c]
}
throw [list IDNA INVALID_NAME_CHARACTER $ch] \
"bad character \"$ch\" in DNS name"
}
set part xn--[punyencode $part]
# Length restriction from RFC 5890, Sec 2.3.1
if {[string length $part] > 63} {
throw [list IDNA OVERLONG_PART $part] \
"hostname part too long"
}
}
lappend parts $part
}
return [join $parts .]
}
proc IDNAdecode hostname {
set parts {}
# Split term from RFC 3490, Sec 3.1
foreach part [split $hostname "\x2E\u3002\uFF0E\uFF61"] {
if {[string match -nocase "xn--*" $part]} {
set part [punydecode [string range $part 4 end]]
}
lappend parts $part
}
return [join $parts .]
}
variable digits [split "abcdefghijklmnopqrstuvwxyz0123456789" ""]
# Bootstring parameters for Punycode
variable base 36
variable tmin 1
variable tmax 26
variable skew 38
variable damp 700
variable initial_bias 72
variable initial_n 0x80
variable max_codepoint 0x10FFFF
proc adapt {delta first numchars} {
variable base
variable tmin
variable tmax
variable damp
variable skew
set delta [expr {$delta / ($first ? $damp : 2)}]
incr delta [expr {$delta / $numchars}]
set k 0
while {$delta > ($base - $tmin) * $tmax / 2} {
set delta [expr {$delta / ($base-$tmin)}]
incr k $base
}
return [expr {$k + ($base-$tmin+1) * $delta / ($delta+$skew)}]
}
# Main punycode encoding function
proc punyencode {string {case ""}} {
variable digits
variable tmin
variable tmax
variable base
variable initial_n
variable initial_bias
if {![string is boolean $case]} {
return -code error "\"$case\" must be boolean"
}
set in {}
foreach char [set string [split $string ""]] {
scan $char "%c" ch
lappend in $ch
}
set output {}
# Initialize the state:
set n $initial_n
set delta 0
set bias $initial_bias
# Handle the basic code points:
foreach ch $string {
if {$ch < "\x80"} {
if {$case eq ""} {
append output $ch
} elseif {[string is true $case]} {
append output [string toupper $ch]
} elseif {[string is false $case]} {
append output [string tolower $ch]
}
}
}
set b [string length $output]
# h is the number of code points that have been handled, b is the
# number of basic code points.
if {$b > 0} {
append output "-"
}
# Main encoding loop:
for {set h $b} {$h < [llength $in]} {incr delta; incr n} {
# All non-basic code points < n have been handled already. Find
# the next larger one:
set m inf
foreach ch $in {
if {$ch >= $n && $ch < $m} {
set m $ch
}
}
# Increase delta enough to advance the decoder's <n,i> state to
# <m,0>, but guard against overflow:
if {$m-$n > (0xFFFFFFFF-$delta)/($h+1)} {
throw {PUNYCODE OVERFLOW} "overflow in delta computation"
}
incr delta [expr {($m-$n) * ($h+1)}]
set n $m
foreach ch $in {
if {$ch < $n && ([incr delta] & 0xFFFFFFFF) == 0} {
throw {PUNYCODE OVERFLOW} "overflow in delta computation"
}
if {$ch != $n} {
continue
}
# Represent delta as a generalized variable-length integer:
for {set q $delta; set k $base} true {incr k $base} {
set t [expr {min(max($k-$bias, $tmin), $tmax)}]
if {$q < $t} {
break
}
append output \
[lindex $digits [expr {$t + ($q-$t)%($base-$t)}]]
set q [expr {($q-$t) / ($base-$t)}]
}
append output [lindex $digits $q]
set bias [adapt $delta [expr {$h==$b}] [expr {$h+1}]]
set delta 0
incr h
}
}
return $output
}
# Main punycode decode function
proc punydecode {string {case ""}} {
variable tmin
variable tmax
variable base
variable initial_n
variable initial_bias
variable max_codepoint
if {![string is boolean $case]} {
return -code error "\"$case\" must be boolean"
}
# Initialize the state:
set n $initial_n
set i 0
set first 1
set bias $initial_bias
# Split the string into the "real" ASCII characters and the ones to
# feed into the main decoder. Note that we don't need to check the
# result of [regexp] because that RE will technically match any string
# at all.
regexp {^(?:(.*)-)?([^-]*)$} $string -> pre post
if {[string is true -strict $case]} {
set pre [string toupper $pre]
} elseif {[string is false -strict $case]} {
set pre [string tolower $pre]
}
set output [split $pre ""]
set out [llength $output]
# Main decoding loop:
for {set in 0} {$in < [string length $post]} {incr in} {
# Decode a generalized variable-length integer into delta, which
# gets added to i. The overflow checking is easier if we increase
# i as we go, then subtract off its starting value at the end to
# obtain delta.
for {set oldi $i; set w 1; set k $base} 1 {incr in} {
if {[set ch [string index $post $in]] eq ""} {
throw {PUNYCODE BAD_INPUT LENGTH} "exceeded input data"
}
if {[string match -nocase {[a-z]} $ch]} {
scan [string toupper $ch] %c digit
incr digit -65
} elseif {[string match {[0-9]} $ch]} {
set digit [expr {$ch + 26}]
} else {
throw {PUNYCODE BAD_INPUT CHAR} \
"bad decode character \"$ch\""
}
incr i [expr {$digit * $w}]
set t [expr {min(max($tmin, $k-$bias), $tmax)}]
if {$digit < $t} {
set bias [adapt [expr {$i-$oldi}] $first [incr out]]
set first 0
break
}
if {[set w [expr {$w * ($base - $t)}]] > 0x7FFFFFFF} {
throw {PUNYCODE OVERFLOW} \
"excessively large integer computed in digit decode"
}
incr k $base
}
# i was supposed to wrap around from out+1 to 0, incrementing n
# each time, so we'll fix that now:
if {[incr n [expr {$i / $out}]] > 0x7FFFFFFF} {
throw {PUNYCODE OVERFLOW} \
"excessively large integer computed in character choice"
} elseif {$n > $max_codepoint} {
if {$n >= 0x00D800 && $n < 0x00E000} {
# Bare surrogate?!
throw {PUNYCODE NON_BMP} \
[format "unsupported character U+%06x" $n]
}
throw {PUNYCODE NON_UNICODE} "bad codepoint $n"
}
set i [expr {$i % $out}]
# Insert n at position i of the output:
set output [linsert $output $i [format "%c" $n]]
incr i
}
return [join $output ""]
}
}
package provide tcl::idna 1.0.1
# Local variables:
# mode: tcl
# fill-column: 78
# End:

3
src/runtime/tcl_library/cookiejar/pkgIndex.tcl

@ -1,3 +0,0 @@
if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
package ifneeded cookiejar 0.2.0 [list source [file join $dir cookiejar.tcl]]
package ifneeded tcl::idna 1.0.1 [list source [file join $dir idna.tcl]]

BIN
src/runtime/tcl_library/cookiejar/public_suffix_list.dat.gz

Binary file not shown.

12
src/runtime/tcl_library/dde/pkgIndex.tcl

@ -1,12 +0,0 @@
if {[info sharedlibextension] != ".dll"} return
if {[package vsatisfies [package provide Tcl] 9.0-]} {
package ifneeded dde 1.4.5 \
[list load [file join $dir tcl9dde14.dll] Dde]
} elseif {![package vsatisfies [package provide Tcl] 8.7]
&& [::tcl::pkgconfig get debug]} {
package ifneeded dde 1.4.5 \
[list load [file join $dir tcldde14g.dll] Dde]
} else {
package ifneeded dde 1.4.5 \
[list load [file join $dir tcldde14.dll] Dde]
}

BIN
src/runtime/tcl_library/dde/tcl9dde14.dll

Binary file not shown.

20
src/runtime/tcl_library/encoding/ascii.enc

@ -1,20 +0,0 @@
# Encoding file: ascii, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

1516
src/runtime/tcl_library/encoding/big5.enc

File diff suppressed because it is too large Load Diff

1584
src/runtime/tcl_library/encoding/cns11643.enc

File diff suppressed because it is too large Load Diff

20
src/runtime/tcl_library/encoding/cp1250.enc

@ -1,20 +0,0 @@
# Encoding file: cp1250, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0000201E2026202020210000203001602039015A0164017D0179
000020182019201C201D202220132014000021220161203A015B0165017E017A
00A002C702D8014100A4010400A600A700A800A9015E00AB00AC00AD00AE017B
00B000B102DB014200B400B500B600B700B80105015F00BB013D02DD013E017C
015400C100C2010200C40139010600C7010C00C9011800CB011A00CD00CE010E
01100143014700D300D4015000D600D70158016E00DA017000DC00DD016200DF
015500E100E2010300E4013A010700E7010D00E9011900EB011B00ED00EE010F
01110144014800F300F4015100F600F70159016F00FA017100FC00FD016302D9

20
src/runtime/tcl_library/encoding/cp1251.enc

@ -1,20 +0,0 @@
# Encoding file: cp1251, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
04020403201A0453201E20262020202120AC203004092039040A040C040B040F
045220182019201C201D202220132014000021220459203A045A045C045B045F
00A0040E045E040800A4049000A600A7040100A9040400AB00AC00AD00AE0407
00B000B104060456049100B500B600B704512116045400BB0458040504550457
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
0430043104320433043404350436043704380439043A043B043C043D043E043F
0440044104420443044404450446044704480449044A044B044C044D044E044F

20
src/runtime/tcl_library/encoding/cp1252.enc

@ -1,20 +0,0 @@
# Encoding file: cp1252, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0192201E20262020202102C620300160203901520000017D0000
000020182019201C201D20222013201402DC21220161203A01530000017E0178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF

20
src/runtime/tcl_library/encoding/cp1253.enc

@ -1,20 +0,0 @@
# Encoding file: cp1253, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0192201E20262020202100002030000020390000000000000000
000020182019201C201D202220132014000021220000203A0000000000000000
00A00385038600A300A400A500A600A700A800A9000000AB00AC00AD00AE2015
00B000B100B200B3038400B500B600B703880389038A00BB038C00BD038E038F
0390039103920393039403950396039703980399039A039B039C039D039E039F
03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
03B003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
03C003C103C203C303C403C503C603C703C803C903CA03CB03CC03CD03CE0000

20
src/runtime/tcl_library/encoding/cp1254.enc

@ -1,20 +0,0 @@
# Encoding file: cp1254, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0192201E20262020202102C62030016020390152000000000000
000020182019201C201D20222013201402DC21220161203A0153000000000178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
011E00D100D200D300D400D500D600D700D800D900DA00DB00DC0130015E00DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
011F00F100F200F300F400F500F600F700F800F900FA00FB00FC0131015F00FF

20
src/runtime/tcl_library/encoding/cp1255.enc

@ -1,20 +0,0 @@
# Encoding file: cp1255, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0192201E20262020202102C62030000020390000000000000000
000020182019201C201D20222013201402DC21220000203A0000000000000000
00A000A100A200A320AA00A500A600A700A800A900D700AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE00BF
05B005B105B205B305B405B505B605B705B805B9000005BB05BC05BD05BE05BF
05C005C105C205C305F005F105F205F305F40000000000000000000000000000
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000

20
src/runtime/tcl_library/encoding/cp1256.enc

@ -1,20 +0,0 @@
# Encoding file: cp1256, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC067E201A0192201E20262020202102C62030067920390152068606980688
06AF20182019201C201D20222013201406A921220691203A0153200C200D06BA
00A0060C00A200A300A400A500A600A700A800A906BE00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B9061B00BB00BC00BD00BE061F
06C1062106220623062406250626062706280629062A062B062C062D062E062F
063006310632063306340635063600D7063706380639063A0640064106420643
00E0064400E2064506460647064800E700E800E900EA00EB0649064A00EE00EF
064B064C064D064E00F4064F065000F7065100F9065200FB00FC200E200F06D2

20
src/runtime/tcl_library/encoding/cp1257.enc

@ -1,20 +0,0 @@
# Encoding file: cp1257, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0000201E2026202020210000203000002039000000A802C700B8
000020182019201C201D202220132014000021220000203A000000AF02DB0000
00A0000000A200A300A4000000A600A700D800A9015600AB00AC00AD00AE00C6
00B000B100B200B300B400B500B600B700F800B9015700BB00BC00BD00BE00E6
0104012E0100010600C400C501180112010C00C90179011601220136012A013B
01600143014500D3014C00D500D600D701720141015A016A00DC017B017D00DF
0105012F0101010700E400E501190113010D00E9017A011701230137012B013C
01610144014600F3014D00F500F600F701730142015B016B00FC017C017E02D9

20
src/runtime/tcl_library/encoding/cp1258.enc

@ -1,20 +0,0 @@
# Encoding file: cp1258, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC0000201A0192201E20262020202102C62030000020390152000000000000
000020182019201C201D20222013201402DC21220000203A0153000000000178
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C2010200C400C500C600C700C800C900CA00CB030000CD00CE00CF
011000D1030900D300D401A000D600D700D800D900DA00DB00DC01AF030300DF
00E000E100E2010300E400E500E600E700E800E900EA00EB030100ED00EE00EF
011100F1032300F300F401A100F600F700F800F900FA00FB00FC01B020AB00FF

20
src/runtime/tcl_library/encoding/cp437.enc

@ -1,20 +0,0 @@
# Encoding file: cp437, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
00C900E600C600F400F600F200FB00F900FF00D600DC00A200A300A520A70192
00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00BB
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp737.enc

@ -1,20 +0,0 @@
# Encoding file: cp737, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
039103920393039403950396039703980399039A039B039C039D039E039F03A0
03A103A303A403A503A603A703A803A903B103B203B303B403B503B603B703B8
03B903BA03BB03BC03BD03BE03BF03C003C103C303C203C403C503C603C703C8
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03C903AC03AD03AE03CA03AF03CC03CD03CB03CE038603880389038A038C038E
038F00B12265226403AA03AB00F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp775.enc

@ -1,20 +0,0 @@
# Encoding file: cp775, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
010600FC00E9010100E4012300E501070142011301560157012B017900C400C5
00C900E600C6014D00F6012200A2015A015B00D600DC00F800A300D800D700A4
0100012A00F3017B017C017A201D00A600A900AE00AC00BD00BC014100AB00BB
259125922593250225240104010C01180116256325512557255D012E01602510
25142534252C251C2500253C0172016A255A25542569256625602550256C017D
0105010D01190117012F01610173016B017E2518250C25882584258C25902580
00D300DF014C014300F500D500B5014401360137013B013C0146011201452019
00AD00B1201C00BE00B600A700F7201E00B0221900B700B900B300B225A000A0

20
src/runtime/tcl_library/encoding/cp850.enc

@ -1,20 +0,0 @@
# Encoding file: cp850, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
00C900E600C600F400F600F200FB00F900FF00D600DC00F800A300D800D70192
00E100ED00F300FA00F100D100AA00BA00BF00AE00AC00BD00BC00A100AB00BB
2591259225932502252400C100C200C000A9256325512557255D00A200A52510
25142534252C251C2500253C00E300C3255A25542569256625602550256C00A4
00F000D000CA00CB00C8013100CD00CE00CF2518250C2588258400A600CC2580
00D300DF00D400D200F500D500B500FE00DE00DA00DB00D900FD00DD00AF00B4
00AD00B1201700BE00B600A700F700B800B000A800B700B900B300B225A000A0

20
src/runtime/tcl_library/encoding/cp852.enc

@ -1,20 +0,0 @@
# Encoding file: cp852, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E4016F010700E7014200EB0150015100EE017900C40106
00C90139013A00F400F6013D013E015A015B00D600DC01640165014100D7010D
00E100ED00F300FA01040105017D017E0118011900AC017A010C015F00AB00BB
2591259225932502252400C100C2011A015E256325512557255D017B017C2510
25142534252C251C2500253C01020103255A25542569256625602550256C00A4
01110110010E00CB010F014700CD00CE011B2518250C258825840162016E2580
00D300DF00D401430144014801600161015400DA0155017000FD00DD016300B4
00AD02DD02DB02C702D800A700F700B800B000A802D901710158015925A000A0

20
src/runtime/tcl_library/encoding/cp855.enc

@ -1,20 +0,0 @@
# Encoding file: cp855, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0452040204530403045104010454040404550405045604060457040704580408
04590409045A040A045B040B045C040C045E040E045F040F044E042E044A042A
0430041004310411044604260434041404350415044404240433041300AB00BB
259125922593250225240445042504380418256325512557255D043904192510
25142534252C251C2500253C043A041A255A25542569256625602550256C00A4
043B041B043C041C043D041D043E041E043F2518250C25882584041F044F2580
042F044004200441042104420422044304230436041604320412044C042C2116
00AD044B042B0437041704480428044D042D044904290447042700A725A000A0

20
src/runtime/tcl_library/encoding/cp857.enc

@ -1,20 +0,0 @@
# Encoding file: cp857, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE013100C400C5
00C900E600C600F400F600F200FB00F9013000D600DC00F800A300D8015E015F
00E100ED00F300FA00F100D1011E011F00BF00AE00AC00BD00BC00A100AB00BB
2591259225932502252400C100C200C000A9256325512557255D00A200A52510
25142534252C251C2500253C00E300C3255A25542569256625602550256C00A4
00BA00AA00CA00CB00C8000000CD00CE00CF2518250C2588258400A600CC2580
00D300DF00D400D200F500D500B5000000D700DA00DB00D900EC00FF00AF00B4
00AD00B1000000BE00B600A700F700B800B000A800B700B900B300B225A000A0

20
src/runtime/tcl_library/encoding/cp860.enc

@ -1,20 +0,0 @@
# Encoding file: cp860, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E300E000C100E700EA00CA00E800CD00D400EC00C300C2
00C900C000C800F400F500F200DA00F900CC00D500DC00A200A300D920A700D3
00E100ED00F300FA00F100D100AA00BA00BF00D200AC00BD00BC00A100AB00BB
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp861.enc

@ -1,20 +0,0 @@
# Encoding file: cp861, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E400E000E500E700EA00EB00E800D000F000DE00C400C5
00C900E600C600F400F600FE00FB00DD00FD00D600DC00F800A300D820A70192
00E100ED00F300FA00C100CD00D300DA00BF231000AC00BD00BC00A100AB00BB
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp862.enc

@ -1,20 +0,0 @@
# Encoding file: cp862, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
05E005E105E205E305E405E505E605E705E805E905EA00A200A300A520A70192
00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00BB
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp863.enc

@ -1,20 +0,0 @@
# Encoding file: cp863, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200C200E000B600E700EA00EB00E800EF00EE201700C000A7
00C900C800CA00F400CB00CF00FB00F900A400D400DC00A200A300D900DB0192
00A600B400F300FA00A800B800B300AF00CE231000AC00BD00BC00BE00AB00BB
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp864.enc

@ -1,20 +0,0 @@
# Encoding file: cp864, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
00200021002200230024066A0026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00B000B72219221A259225002502253C2524252C251C25342510250C25142518
03B2221E03C600B100BD00BC224800AB00BBFEF7FEF800000000FEFBFEFC0000
00A000ADFE8200A300A4FE8400000000FE8EFE8FFE95FE99060CFE9DFEA1FEA5
0660066106620663066406650666066706680669FED1061BFEB1FEB5FEB9061F
00A2FE80FE81FE83FE85FECAFE8BFE8DFE91FE93FE97FE9BFE9FFEA3FEA7FEA9
FEABFEADFEAFFEB3FEB7FEBBFEBFFEC1FEC5FECBFECF00A600AC00F700D7FEC9
0640FED3FED7FEDBFEDFFEE3FEE7FEEBFEEDFEEFFEF3FEBDFECCFECEFECDFEE1
FE7D0651FEE5FEE9FEECFEF0FEF2FED0FED5FEF5FEF6FEDDFED9FEF125A00000

20
src/runtime/tcl_library/encoding/cp865.enc

@ -1,20 +0,0 @@
# Encoding file: cp865, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
00C900E600C600F400F600F200FB00F900FF00D600DC00F800A300D820A70192
00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00A4
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0

20
src/runtime/tcl_library/encoding/cp866.enc

@ -1,20 +0,0 @@
# Encoding file: cp866, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
0430043104320433043404350436043704380439043A043B043C043D043E043F
259125922593250225242561256225562555256325512557255D255C255B2510
25142534252C251C2500253C255E255F255A25542569256625602550256C2567
2568256425652559255825522553256B256A2518250C25882584258C25902580
0440044104420443044404450446044704480449044A044B044C044D044E044F
040104510404045404070457040E045E00B0221900B7221A211600A425A000A0

20
src/runtime/tcl_library/encoding/cp869.enc

@ -1,20 +0,0 @@
# Encoding file: cp869, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000386000000B700AC00A620182019038820150389
038A03AA038C00000000038E03AB00A9038F00B200B303AC00A303AD03AE03AF
03CA039003CC03CD039103920393039403950396039700BD0398039900AB00BB
25912592259325022524039A039B039C039D256325512557255D039E039F2510
25142534252C251C2500253C03A003A1255A25542569256625602550256C03A3
03A403A503A603A703A803A903B103B203B32518250C2588258403B403B52580
03B603B703B803B903BA03BB03BC03BD03BE03BF03C003C103C303C203C40384
00AD00B103C503C603C700A703C8038500B000A803C903CB03B003CE25A000A0

20
src/runtime/tcl_library/encoding/cp874.enc

@ -1,20 +0,0 @@
# Encoding file: cp874, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
20AC000000000000000020260000000000000000000000000000000000000000
000020182019201C201D20222013201400000000000000000000000000000000
00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000

801
src/runtime/tcl_library/encoding/cp932.enc

@ -1,801 +0,0 @@
# Encoding file: cp932, multi-byte
M
003F 0 46
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
81
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8FF3E
FFE3FF3F30FD30FE309D309E30034EDD30053006300730FC20152010FF0FFF3C
FF5E2225FF5C2026202520182019201C201DFF08FF0930143015FF3BFF3DFF5B
FF5D30083009300A300B300C300D300E300F30103011FF0BFF0D00B100D70000
00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
FF04FFE0FFE1FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C725C6
25A125A025B325B225BD25BC203B301221922190219121933013000000000000
000000000000000000000000000000002208220B2286228722822283222A2229
0000000000000000000000000000000022272228FFE221D221D4220022030000
0000000000000000000000000000000000000000222022A52312220222072261
2252226A226B221A223D221D2235222B222C0000000000000000000000000000
212B2030266F266D266A2020202100B6000000000000000025EF000000000000
82
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000FF10
FF11FF12FF13FF14FF15FF16FF17FF18FF190000000000000000000000000000
FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30
FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3A000000000000000000000000
0000FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000003041
30423043304430453046304730483049304A304B304C304D304E304F30503051
30523053305430553056305730583059305A305B305C305D305E305F30603061
30623063306430653066306730683069306A306B306C306D306E306F30703071
30723073307430753076307730783079307A307B307C307D307E307F30803081
30823083308430853086308730883089308A308B308C308D308E308F30903091
3092309300000000000000000000000000000000000000000000000000000000
83
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
30A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF30B0
30B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF30C0
30C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF30D0
30D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF0000
30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
30F030F130F230F330F430F530F6000000000000000000000000000000000391
03920393039403950396039703980399039A039B039C039D039E039F03A003A1
03A303A403A503A603A703A803A90000000000000000000000000000000003B1
03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1
03C303C403C503C603C703C803C9000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
04100411041204130414041504010416041704180419041A041B041C041D041E
041F0420042104220423042404250426042704280429042A042B042C042D042E
042F000000000000000000000000000000000000000000000000000000000000
04300431043204330434043504510436043704380439043A043B043C043D0000
043E043F0440044104420443044404450446044704480449044A044B044C044D
044E044F00000000000000000000000000000000000000000000000000002500
2502250C251025182514251C252C25242534253C25012503250F2513251B2517
25232533252B253B254B2520252F25282537253F251D25302525253825420000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
87
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
2460246124622463246424652466246724682469246A246B246C246D246E246F
2470247124722473216021612162216321642165216621672168216900003349
33143322334D331833273303333633513357330D33263323332B334A333B339C
339D339E338E338F33C433A100000000000000000000000000000000337B0000
301D301F211633CD212132A432A532A632A732A8323132323239337E337D337C
22522261222B222E2211221A22A52220221F22BF22352229222A000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
88
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000004E9C
55165A03963F54C0611B632859F690228475831C7A5060AA63E16E2565ED8466
82A69BF56893572765A162715B9B59D0867B98F47D627DBE9B8E62167C9F88B7
5B895EB563096697684895C7978D674F4EE54F0A4F4D4F9D504956F2593759D4
5A015C0960DF610F61706613690570BA754F757079FB7DAD7DEF80C3840E8863
8B029055907A533B4E954EA557DF80B290C178EF4E0058F16EA290387A328328
828B9C2F5141537054BD54E156E059FB5F1598F26DEB80E4852D000000000000
89
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9662967096A097FB540B53F35B8770CF7FBD8FC296E8536F9D5C7ABA4E117893
81FC6E26561855046B1D851A9C3B59E553A96D6674DC958F56424E91904B96F2
834F990C53E155B65B305F71662066F368046C386CF36D29745B76C87A4E9834
82F1885B8A6092ED6DB275AB76CA99C560A68B018D8A95B2698E53AD51860000
5712583059445BB45EF6602863A963F46CBF6F14708E7114715971D5733F7E01
827682D185979060925B9D1B586965BC6C5A752551F9592E59655F805FDC62BC
65FA6A2A6B276BB4738B7FC189569D2C9D0E9EC45CA16C96837B51045C4B61B6
81C6687672614E594FFA537860696E297A4F97F34E0B53164EEE4F554F3D4FA1
4F7352A053EF5609590F5AC15BB65BE179D16687679C67B66B4C6CB3706B73C2
798D79BE7A3C7B8782B182DB8304837783EF83D387668AB256298CA88FE6904E
971E868A4FC45CE862117259753B81E582BD86FE8CC096C5991399D54ECB4F1A
89E356DE584A58CA5EFB5FEB602A6094606261D0621262D06539000000000000
8A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9B41666668B06D777070754C76867D7582A587F9958B968E8C9D51F152BE5916
54B35BB35D16616869826DAF788D84CB88578A7293A79AB86D6C99A886D957A3
67FF86CE920E5283568754045ED362E164B9683C68386BBB737278BA7A6B899A
89D28D6B8F0390ED95A3969497695B665CB3697D984D984E639B7B206A2B0000
6A7F68B69C0D6F5F5272559D607062EC6D3B6E076ED1845B89108F444E149C39
53F6691B6A3A9784682A515C7AC384B291DC938C565B9D286822830584317CA5
520882C574E64E7E4F8351A05BD2520A52D852E75DFB559A582A59E65B8C5B98
5BDB5E725E7960A3611F616361BE63DB656267D1685368FA6B3E6B536C576F22
6F976F4574B0751876E3770B7AFF7BA17C217DE97F367FF0809D8266839E89B3
8ACC8CAB908494519593959195A2966597D3992882184E38542B5CB85DCC73A9
764C773C5CA97FEB8D0B96C19811985498584F014F0E5371559C566857FA5947
5B095BC45C905E0C5E7E5FCC63EE673A65D765E2671F68CB68C4000000000000
8B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A5F5E306BC56C176C7D757F79485B637A007D005FBD898F8A188CB48D778ECC
8F1D98E29A0E9B3C4E80507D510059935B9C622F628064EC6B3A72A075917947
7FA987FB8ABC8B7063AC83CA97A05409540355AB68546A588A70782767759ECD
53745BA2811A865090064E184E454EC74F1153CA54385BAE5F13602565510000
673D6C426C726CE3707874037A767AAE7B087D1A7CFE7D6665E7725B53BB5C45
5DE862D262E063196E20865A8A318DDD92F86F0179A69B5A4EA84EAB4EAC4F9B
4FA050D151477AF6517151F653545321537F53EB55AC58835CE15F375F4A602F
6050606D631F65596A4B6CC172C272ED77EF80F881058208854E90F793E197FF
99579A5A4EF051DD5C2D6681696D5C4066F26975738968507C8150C552E45747
5DFE932665A46B236B3D7434798179BD7B4B7DCA82B983CC887F895F8B398FD1
91D1541F92804E5D503653E5533A72D7739677E982E68EAF99C699C899D25177
611A865E55B07A7A50765BD3904796854E326ADB91E75C515C48000000000000
8C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
63987A9F6C9397748F617AAA718A96887C8268177E706851936C52F2541B85AB
8A137FA48ECD90E15366888879414FC250BE521151445553572D73EA578B5951
5F625F8460756176616761A963B2643A656C666F68426E1375667A3D7CFB7D4C
7D997E4B7F6B830E834A86CD8A088A638B668EFD981A9D8F82B88FCE9BE80000
5287621F64836FC09699684150916B206C7A6F547A747D5088408A2367084EF6
503950265065517C5238526355A7570F58055ACC5EFA61B261F862F36372691C
6A29727D72AC732E7814786F7D79770C80A9898B8B198CE28ED290639375967A
98559A139E785143539F53B35E7B5F266E1B6E90738473FE7D4382378A008AFA
96504E4E500B53E4547C56FA59D15B645DF15EAB5F276238654567AF6E5672D0
7CCA88B480A180E183F0864E8A878DE8923796C798679F134E944E924F0D5348
5449543E5A2F5F8C5FA1609F68A76A8E745A78818A9E8AA48B7791904E5E9BC9
4EA44F7C4FAF501950165149516C529F52B952FE539A53E35411000000000000
8D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
540E5589575157A2597D5B545B5D5B8F5DE55DE75DF75E785E835E9A5EB75F18
6052614C629762D863A7653B6602664366F4676D6821689769CB6C5F6D2A6D69
6E2F6E9D75327687786C7A3F7CE07D057D187D5E7DB18015800380AF80B18154
818F822A8352884C88618B1B8CA28CFC90CA91759271783F92FC95A4964D0000
980599999AD89D3B525B52AB53F7540858D562F76FE08C6A8F5F9EB9514B523B
544A56FD7A4091779D609ED273446F09817075115FFD60DA9AA872DB8FBC6B64
98034ECA56F0576458BE5A5A606861C7660F6606683968B16DF775D57D3A826E
9B424E9B4F5053C955065D6F5DE65DEE67FB6C99747378028A50939688DF5750
5EA7632B50B550AC518D670054C9585E59BB5BB05F69624D63A1683D6B736E08
707D91C7728078157826796D658E7D3083DC88C18F09969B5264572867507F6A
8CA151B45742962A583A698A80B454B25D0E57FC78959DFA4F5C524A548B643E
6628671467F57A847B567D22932F685C9BAD7B395319518A5237000000000000
8E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5BDF62F664AE64E6672D6BBA85A996D176909BD6634C93069BAB76BF66524E09
509853C25C7160E864926563685F71E673CA75237B977E8286958B838CDB9178
991065AC66AB6B8B4ED54ED44F3A4F7F523A53F853F255E356DB58EB59CB59C9
59FF5B505C4D5E025E2B5FD7601D6307652F5B5C65AF65BD65E8679D6B620000
6B7B6C0F7345794979C17CF87D197D2B80A2810281F389968A5E8A698A668A8C
8AEE8CC78CDC96CC98FC6B6F4E8B4F3C4F8D51505B575BFA6148630166426B21
6ECB6CBB723E74BD75D478C1793A800C803381EA84948F9E6C509E7F5F0F8B58
9D2B7AFA8EF85B8D96EB4E0353F157F759315AC95BA460896E7F6F0675BE8CEA
5B9F85007BE0507267F4829D5C61854A7E1E820E51995C0463688D66659C716E
793E7D1780058B1D8ECA906E86C790AA501F52FA5C3A6753707C7235914C91C8
932B82E55BC25F3160F94E3B53D65B88624B67316B8A72E973E07A2E816B8DA3
91529996511253D7546A5BFF63886A397DAC970056DA53CE5468000000000000
8F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5B975C315DDE4FEE610162FE6D3279C079CB7D427E4D7FD281ED821F84908846
89728B908E748F2F9031914B916C96C6919C4EC04F4F514553415F93620E67D4
6C416E0B73637E2691CD928353D459195BBF6DD1795D7E2E7C9B587E719F51FA
88538FF04FCA5CFB662577AC7AE3821C99FF51C65FAA65EC696F6B896DF30000
6E966F6476FE7D145DE190759187980651E6521D6240669166D96E1A5EB67DD2
7F7266F885AF85F78AF852A953D959735E8F5F90605592E4966450B7511F52DD
5320534753EC54E8554655315617596859BE5A3C5BB55C065C0F5C115C1A5E84
5E8A5EE05F70627F628462DB638C63776607660C662D6676677E68A26A1F6A35
6CBC6D886E096E58713C7126716775C77701785D7901796579F07AE07B117CA7
7D39809683D6848B8549885D88F38A1F8A3C8A548A738C618CDE91A49266937E
9418969C97984E0A4E084E1E4E575197527057CE583458CC5B225E3860C564FE
676167566D4472B675737A6384B88B7291B89320563157F498FE000000000000
90
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
62ED690D6B9671ED7E548077827289E698DF87558FB15C3B4F384FE14FB55507
5A205BDD5BE95FC3614E632F65B0664B68EE699B6D786DF1753375B9771F795E
79E67D3381E382AF85AA89AA8A3A8EAB8F9B903291DD97074EBA4EC152035875
58EC5C0B751A5C3D814E8A0A8FC59663976D7B258ACF9808916256F353A80000
9017543957825E2563A86C34708A77617C8B7FE088709042915493109318968F
745E9AC45D075D69657067A28DA896DB636E6749691983C5981796C088FE6F84
647A5BF84E16702C755D662F51C4523652E259D35F8160276210653F6574661F
667468F268166B636E057272751F76DB7CBE805658F088FD897F8AA08A938ACB
901D91929752975965897A0E810696BB5E2D60DC621A65A56614679077F37A4D
7C4D7E3E810A8CAC8D648DE18E5F78A9520762D963A5644262988A2D7A837BC0
8AAC96EA7D76820C87494ED95148534353605BA35C025C165DDD6226624764B0
681368346CC96D456D1767D36F5C714E717D65CB7A7F7BAD7DDA000000000000
91
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7E4A7FA8817A821B823985A68A6E8CCE8DF59078907792AD929195839BAE524D
55846F387136516879857E5581B37CCE564C58515CA863AA66FE66FD695A72D9
758F758E790E795679DF7C977D207D4486078A34963B90619F2050E7527553CC
53E2500955AA58EE594F723D5B8B5C64531D60E360F3635C6383633F63BB0000
64CD65E966F95DE369CD69FD6F1571E54E8975E976F87A937CDF7DCF7D9C8061
83498358846C84BC85FB88C58D709001906D9397971C9A1250CF5897618E81D3
85358D0890204FC3507452475373606F6349675F6E2C8DB3901F4FD75C5E8CCA
65CF7D9A53528896517663C35B585B6B5C0A640D6751905C4ED6591A592A6C70
8A51553E581559A560F0625367C182356955964099C49A284F5358065BFE8010
5CB15E2F5F856020614B623466FF6CF06EDE80CE817F82D4888B8CB89000902E
968A9EDB9BDB4EE353F059277B2C918D984C9DF96EDD7027535355445B856258
629E62D36CA26FEF74228A1794386FC18AFE833851E786F853EA000000000000
92
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
53E94F4690548FB0596A81315DFD7AEA8FBF68DA8C3772F89C486A3D8AB04E39
53585606576662C563A265E66B4E6DE16E5B70AD77ED7AEF7BAA7DBB803D80C6
86CB8A95935B56E358C75F3E65AD66966A806BB575378AC7502477E557305F1B
6065667A6C6075F47A1A7F6E81F48718904599B37BC9755C7AF97B5184C40000
901079E97A9283365AE177404E2D4EF25B995FE062BD663C67F16CE8866B8877
8A3B914E92F399D06A177026732A82E784578CAF4E01514651CB558B5BF55E16
5E335E815F145F355F6B5FB461F2631166A2671D6F6E7252753A773A80748139
817887768ABF8ADC8D858DF3929A957798029CE552C5635776F467156C8873CD
8CC393AE96736D25589C690E69CC8FFD939A75DB901A585A680263B469FB4F43
6F2C67D88FBB85267DB49354693F6F70576A58F75B2C7D2C722A540A91E39DB4
4EAD4F4E505C507552438C9E544858245B9A5E1D5E955EAD5EF75F1F608C62B5
633A63D068AF6C407887798E7A0B7DE082478A028AE68E449013000000000000
93
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
90B8912D91D89F0E6CE5645864E265756EF476847B1B906993D16EBA54F25FB9
64A48F4D8FED92445178586B59295C555E976DFB7E8F751C8CBC8EE2985B70B9
4F1D6BBF6FB1753096FB514E54105835585759AC5C605F926597675C6E21767B
83DF8CED901490FD934D7825783A52AA5EA6571F597460125012515A51AC0000
51CD520055105854585859575B955CF65D8B60BC6295642D6771684368BC68DF
76D76DD86E6F6D9B706F71C85F5375D879777B497B547B527CD67D7152308463
856985E48A0E8B048C468E0F9003900F94199676982D9A3095D850CD52D5540C
58025C0E61A7649E6D1E77B37AE580F48404905392855CE09D07533F5F975FB3
6D9C7279776379BF7BE46BD272EC8AAD68036A6151F87A8169345C4A9CF682EB
5BC59149701E56785C6F60C765666C8C8C5A90419813545166C7920D594890A3
51854E4D51EA85998B0E7058637A934B696299B47E047577535769608EDF96E3
6C5D4E8C5C3C5F108FE953028CD1808986795EFF65E54E735165000000000000
94
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59825C3F97EE4EFB598A5FCD8A8D6FE179B079625BE78471732B71B15E745FF5
637B649A71C37C984E435EFC4E4B57DC56A260A96FC37D0D80FD813381BF8FB2
899786A45DF4628A64AD898767776CE26D3E743678345A467F7582AD99AC4FF3
5EC362DD63926557676F76C3724C80CC80BA8F29914D500D57F95A9268850000
6973716472FD8CB758F28CE0966A9019877F79E477E784294F2F5265535A62CD
67CF6CCA767D7B947C95823685848FEB66DD6F2072067E1B83AB99C19EA651FD
7BB178727BB880877B486AE85E61808C75517560516B92626E8C767A91979AEA
4F107F70629C7B4F95A59CE9567A585986E496BC4F345224534A53CD53DB5E06
642C6591677F6C3E6C4E724872AF73ED75547E41822C85E98CA97BC491C67169
981298EF633D6669756A76E478D0854386EE532A5351542659835E875F7C60B2
6249627962AB65906BD46CCC75B276AE789179D87DCB7F7780A588AB8AB98CBB
907F975E98DB6A0B7C3850995C3E5FAE67876BD8743577097F8E000000000000
95
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9F3B67CA7A175339758B9AED5F66819D83F180985F3C5FC575627B46903C6867
59EB5A9B7D10767E8B2C4FF55F6A6A196C376F0274E2796888688A558C795EDF
63CF75C579D282D7932892F2849C86ED9C2D54C15F6C658C6D5C70158CA78CD3
983B654F74F64E0D4ED857E0592B5A665BCC51A85E035E9C6016627665770000
65A7666E6D6E72367B268150819A82998B5C8CA08CE68D74961C96444FAE64AB
6B66821E8461856A90E85C01695398A8847A85574F0F526F5FA95E45670D798F
8179890789866DF55F1762556CB84ECF72699B925206543B567458B361A4626E
711A596E7C897CDE7D1B96F06587805E4E194F75517558405E635E735F0A67C4
4E26853D9589965B7C73980150FB58C1765678A7522577A585117B86504F5909
72477BC77DE88FBA8FD4904D4FBF52C95A295F0197AD4FDD821792EA57036355
6B69752B88DC8F147A4252DF58936155620A66AE6BCD7C3F83E950234FF85305
5446583159495B9D5CF05CEF5D295E9662B16367653E65B9670B000000000000
96
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6CD56CE170F978327E2B80DE82B3840C84EC870289128A2A8C4A90A692D298FD
9CF39D6C4E4F4EA1508D5256574A59A85E3D5FD85FD9623F66B4671B67D068D2
51927D2180AA81A88B008C8C8CBF927E96325420982C531750D5535C58A864B2
6734726777667A4691E652C36CA16B8658005E4C5954672C7FFB51E176C60000
646978E89B549EBB57CB59B96627679A6BCE54E969D95E55819C67959BAA67FE
9C52685D4EA64FE353C862B9672B6CAB8FC44FAD7E6D9EBF4E0761626E806F2B
85135473672A9B455DF37B955CAC5BC6871C6E4A84D17A14810859997C8D6C11
772052D959227121725F77DB97279D61690B5A7F5A1851A5540D547D660E76DF
8FF792989CF459EA725D6EC5514D68C97DBF7DEC97629EBA64786A2183025984
5B5F6BDB731B76F27DB280178499513267289ED976EE676252FF99055C24623B
7C7E8CB0554F60B67D0B958053014E5F51B6591C723A803691CE5F2577E25384
5F797D0485AC8A338E8D975667F385AE9453610961086CB97652000000000000
97
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8AED8F38552F4F51512A52C753CB5BA55E7D60A0618263D6670967DA6E676D8C
733673377531795088D58A98904A909190F596C4878D59154E884F594E0E8A89
8F3F981050AD5E7C59965BB95EB863DA63FA64C166DC694A69D86D0B6EB67194
75287AAF7F8A8000844984C989818B218E0A9065967D990A617E62916B320000
6C836D747FCC7FFC6DC07F8587BA88F8676583B1983C96F76D1B7D61843D916A
4E7153755D506B046FEB85CD862D89A75229540F5C65674E68A87406748375E2
88CF88E191CC96E296785F8B73877ACB844E63A0756552896D416E9C74097559
786B7C9296867ADC9F8D4FB6616E65C5865C4E864EAE50DA4E2151CC5BEE6599
68816DBC731F764277AD7A1C7CE7826F8AD2907C91CF96759818529B7DD1502B
539867976DCB71D0743381E88F2A96A39C579E9F746058416D997D2F985E4EE4
4F364F8B51B752B15DBA601C73B2793C82D3923496B796F6970A9E979F6266A6
6B74521752A370C888C25EC9604B61906F2371497C3E7DF4806F000000000000
98
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84EE9023932C54429B6F6AD370898CC28DEF973252B45A415ECA5F046717697C
69946D6A6F0F726272FC7BED8001807E874B90CE516D9E937984808B93328AD6
502D548C8A716B6A8CC4810760D167A09DF24E994E989C108A6B85C185686900
6E7E789781550000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000005F0C
4E104E154E2A4E314E364E3C4E3F4E424E564E584E824E858C6B4E8A82125F0D
4E8E4E9E4E9F4EA04EA24EB04EB34EB64ECE4ECD4EC44EC64EC24ED74EDE4EED
4EDF4EF74F094F5A4F304F5B4F5D4F574F474F764F884F8F4F984F7B4F694F70
4F914F6F4F864F9651184FD44FDF4FCE4FD84FDB4FD14FDA4FD04FE44FE5501A
50285014502A502550054F1C4FF650215029502C4FFE4FEF5011500650435047
6703505550505048505A5056506C50785080509A508550B450B2000000000000
99
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
50C950CA50B350C250D650DE50E550ED50E350EE50F950F55109510151025116
51155114511A5121513A5137513C513B513F51405152514C515451627AF85169
516A516E5180518256D8518C5189518F519151935195519651A451A651A251A9
51AA51AB51B351B151B251B051B551BD51C551C951DB51E0865551E951ED0000
51F051F551FE5204520B5214520E5227522A522E52335239524F5244524B524C
525E5254526A527452695273527F527D528D529452925271528852918FA88FA7
52AC52AD52BC52B552C152CD52D752DE52E352E698ED52E052F352F552F852F9
530653087538530D5310530F5315531A5323532F533153335338534053465345
4E175349534D51D6535E5369536E5918537B53775382539653A053A653A553AE
53B053B653C37C1296D953DF66FC71EE53EE53E853ED53FA5401543D5440542C
542D543C542E54365429541D544E548F5475548E545F5471547754705492547B
5480547654845490548654C754A254B854A554AC54C454C854A8000000000000
9A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
54AB54C254A454BE54BC54D854E554E6550F551454FD54EE54ED54FA54E25539
55405563554C552E555C55455556555755385533555D5599558054AF558A559F
557B557E5598559E55AE557C558355A9558755A855DA55C555DF55C455DC55E4
55D4561455F7561655FE55FD561B55F9564E565071DF56345636563256380000
566B5664562F566C566A56865680568A56A05694568F56A556AE56B656B456C2
56BC56C156C356C056C856CE56D156D356D756EE56F9570056FF570457095708
570B570D57135718571655C7571C572657375738574E573B5740574F576957C0
57885761577F5789579357A057B357A457AA57B057C357C657D457D257D3580A
57D657E3580B5819581D587258215862584B58706BC05852583D5879588558B9
589F58AB58BA58DE58BB58B858AE58C558D358D158D758D958D858E558DC58E4
58DF58EF58FA58F958FB58FC58FD5902590A5910591B68A65925592C592D5932
5938593E7AD259555950594E595A5958596259605967596C5969000000000000
9B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59785981599D4F5E4FAB59A359B259C659E859DC598D59D959DA5A255A1F5A11
5A1C5A095A1A5A405A6C5A495A355A365A625A6A5A9A5ABC5ABE5ACB5AC25ABD
5AE35AD75AE65AE95AD65AFA5AFB5B0C5B0B5B165B325AD05B2A5B365B3E5B43
5B455B405B515B555B5A5B5B5B655B695B705B735B755B7865885B7A5B800000
5B835BA65BB85BC35BC75BC95BD45BD05BE45BE65BE25BDE5BE55BEB5BF05BF6
5BF35C055C075C085C0D5C135C205C225C285C385C395C415C465C4E5C535C50
5C4F5B715C6C5C6E4E625C765C795C8C5C915C94599B5CAB5CBB5CB65CBC5CB7
5CC55CBE5CC75CD95CE95CFD5CFA5CED5D8C5CEA5D0B5D155D175D5C5D1F5D1B
5D115D145D225D1A5D195D185D4C5D525D4E5D4B5D6C5D735D765D875D845D82
5DA25D9D5DAC5DAE5DBD5D905DB75DBC5DC95DCD5DD35DD25DD65DDB5DEB5DF2
5DF55E0B5E1A5E195E115E1B5E365E375E445E435E405E4E5E575E545E5F5E62
5E645E475E755E765E7A9EBC5E7F5EA05EC15EC25EC85ED05ECF000000000000
9C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5ED65EE35EDD5EDA5EDB5EE25EE15EE85EE95EEC5EF15EF35EF05EF45EF85EFE
5F035F095F5D5F5C5F0B5F115F165F295F2D5F385F415F485F4C5F4E5F2F5F51
5F565F575F595F615F6D5F735F775F835F825F7F5F8A5F885F915F875F9E5F99
5F985FA05FA85FAD5FBC5FD65FFB5FE45FF85FF15FDD60B35FFF602160600000
601960106029600E6031601B6015602B6026600F603A605A6041606A6077605F
604A6046604D6063604360646042606C606B60596081608D60E76083609A6084
609B60966097609260A7608B60E160B860E060D360B45FF060BD60C660B560D8
614D6115610660F660F7610060F460FA6103612160FB60F1610D610E6147613E
61286127614A613F613C612C6134613D614261446173617761586159615A616B
6174616F61656171615F615D6153617561996196618761AC6194619A618A6191
61AB61AE61CC61CA61C961F761C861C361C661BA61CB7F7961CD61E661E361F6
61FA61F461FF61FD61FC61FE620062086209620D620C6214621B000000000000
9D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
621E6221622A622E6230623262336241624E625E6263625B62606268627C6282
6289627E62926293629662D46283629462D762D162BB62CF62FF62C664D462C8
62DC62CC62CA62C262C7629B62C9630C62EE62F163276302630862EF62F56350
633E634D641C634F6396638E638063AB637663A3638F6389639F63B5636B0000
636963BE63E963C063C663E363C963D263F663C4641664346406641364266436
651D64176428640F6467646F6476644E652A6495649364A564A9648864BC64DA
64D264C564C764BB64D864C264F164E7820964E064E162AC64E364EF652C64F6
64F464F264FA650064FD6518651C650565246523652B65346535653765366538
754B654865566555654D6558655E655D65726578658265838B8A659B659F65AB
65B765C365C665C165C465CC65D265DB65D965E065E165F16772660A660365FB
6773663566366634661C664F664466496641665E665D666466676668665F6662
667066836688668E668966846698669D66C166B966C966BE66BC000000000000
9E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
66C466B866D666DA66E0663F66E666E966F066F566F7670F6716671E67266727
9738672E673F67366741673867376746675E67606759676367646789677067A9
677C676A678C678B67A667A1678567B767EF67B467EC67B367E967B867E467DE
67DD67E267EE67B967CE67C667E76A9C681E684668296840684D6832684E0000
68B3682B685968636877687F689F688F68AD6894689D689B68836AAE68B96874
68B568A068BA690F688D687E690168CA690868D86922692668E1690C68CD68D4
68E768D569366912690468D768E3692568F968E068EF6928692A691A69236921
68C669796977695C6978696B6954697E696E69396974693D695969306961695E
695D6981696A69B269AE69D069BF69C169D369BE69CE5BE869CA69DD69BB69C3
69A76A2E699169A0699C699569B469DE69E86A026A1B69FF6B0A69F969F269E7
6A0569B16A1E69ED6A1469EB6A0A6A126AC16A236A136A446A0C6A726A366A78
6A476A626A596A666A486A386A226A906A8D6AA06A846AA26AA3000000000000
9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A9786176ABB6AC36AC26AB86AB36AAC6ADE6AD16ADF6AAA6ADA6AEA6AFB6B05
86166AFA6B126B169B316B1F6B386B3776DC6B3998EE6B476B436B496B506B59
6B546B5B6B5F6B616B786B796B7F6B806B846B836B8D6B986B956B9E6BA46BAA
6BAB6BAF6BB26BB16BB36BB76BBC6BC66BCB6BD36BDF6BEC6BEB6BF36BEF0000
9EBE6C086C136C146C1B6C246C236C5E6C556C626C6A6C826C8D6C9A6C816C9B
6C7E6C686C736C926C906CC46CF16CD36CBD6CD76CC56CDD6CAE6CB16CBE6CBA
6CDB6CEF6CD96CEA6D1F884D6D366D2B6D3D6D386D196D356D336D126D0C6D63
6D936D646D5A6D796D596D8E6D956FE46D856DF96E156E0A6DB56DC76DE66DB8
6DC66DEC6DDE6DCC6DE86DD26DC56DFA6DD96DE46DD56DEA6DEE6E2D6E6E6E2E
6E196E726E5F6E3E6E236E6B6E2B6E766E4D6E1F6E436E3A6E4E6E246EFF6E1D
6E386E826EAA6E986EC96EB76ED36EBD6EAF6EC46EB26ED46ED56E8F6EA56EC2
6E9F6F416F11704C6EEC6EF86EFE6F3F6EF26F316EEF6F326ECC000000000000
E0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6F3E6F136EF76F866F7A6F786F816F806F6F6F5B6FF36F6D6F826F7C6F586F8E
6F916FC26F666FB36FA36FA16FA46FB96FC66FAA6FDF6FD56FEC6FD46FD86FF1
6FEE6FDB7009700B6FFA70117001700F6FFE701B701A6F74701D7018701F7030
703E7032705170637099709270AF70F170AC70B870B370AE70DF70CB70DD0000
70D9710970FD711C711971657155718871667162714C7156716C718F71FB7184
719571A871AC71D771B971BE71D271C971D471CE71E071EC71E771F571FC71F9
71FF720D7210721B7228722D722C72307232723B723C723F72407246724B7258
7274727E7282728172877292729672A272A772B972B272C372C672C472CE72D2
72E272E072E172F972F7500F7317730A731C7316731D7334732F73297325733E
734E734F9ED87357736A7368737073787375737B737A73C873B373CE73BB73C0
73E573EE73DE74A27405746F742573F87432743A7455743F745F74597441745C
746974707463746A7476747E748B749E74A774CA74CF74D473F1000000000000
E1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
74E074E374E774E974EE74F274F074F174F874F7750475037505750C750E750D
75157513751E7526752C753C7544754D754A7549755B7546755A756975647567
756B756D75787576758675877574758A758975827594759A759D75A575A375C2
75B375C375B575BD75B875BC75B175CD75CA75D275D975E375DE75FE75FF0000
75FC760175F075FA75F275F3760B760D7609761F762776207621762276247634
7630763B764776487646765C76587661766276687669766A7667766C76707672
76767678767C768076837688768B768E769676937699769A76B076B476B876B9
76BA76C276CD76D676D276DE76E176E576E776EA862F76FB7708770777047729
7724771E77257726771B773777387747775A7768776B775B7765777F777E7779
778E778B779177A0779E77B077B677B977BF77BC77BD77BB77C777CD77D777DA
77DC77E377EE77FC780C781279267820792A7845788E78747886787C789A788C
78A378B578AA78AF78D178C678CB78D478BE78BC78C578CA78EC000000000000
E2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
78E778DA78FD78F47907791279117919792C792B794079607957795F795A7955
7953797A797F798A799D79A79F4B79AA79AE79B379B979BA79C979D579E779EC
79E179E37A087A0D7A187A197A207A1F79807A317A3B7A3E7A377A437A577A49
7A617A627A699F9D7A707A797A7D7A887A977A957A987A967AA97AC87AB00000
7AB67AC57AC47ABF90837AC77ACA7ACD7ACF7AD57AD37AD97ADA7ADD7AE17AE2
7AE67AED7AF07B027B0F7B0A7B067B337B187B197B1E7B357B287B367B507B7A
7B047B4D7B0B7B4C7B457B757B657B747B677B707B717B6C7B6E7B9D7B987B9F
7B8D7B9C7B9A7B8B7B927B8F7B5D7B997BCB7BC17BCC7BCF7BB47BC67BDD7BE9
7C117C147BE67BE57C607C007C077C137BF37BF77C177C0D7BF67C237C277C2A
7C1F7C377C2B7C3D7C4C7C437C547C4F7C407C507C587C5F7C647C567C657C6C
7C757C837C907CA47CAD7CA27CAB7CA17CA87CB37CB27CB17CAE7CB97CBD7CC0
7CC57CC27CD87CD27CDC7CE29B3B7CEF7CF27CF47CF67CFA7D06000000000000
E3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7D027D1C7D157D0A7D457D4B7D2E7D327D3F7D357D467D737D567D4E7D727D68
7D6E7D4F7D637D937D897D5B7D8F7D7D7D9B7DBA7DAE7DA37DB57DC77DBD7DAB
7E3D7DA27DAF7DDC7DB87D9F7DB07DD87DDD7DE47DDE7DFB7DF27DE17E057E0A
7E237E217E127E317E1F7E097E0B7E227E467E667E3B7E357E397E437E370000
7E327E3A7E677E5D7E567E5E7E597E5A7E797E6A7E697E7C7E7B7E837DD57E7D
8FAE7E7F7E887E897E8C7E927E907E937E947E967E8E7E9B7E9C7F387F3A7F45
7F4C7F4D7F4E7F507F517F557F547F587F5F7F607F687F697F677F787F827F86
7F837F887F877F8C7F947F9E7F9D7F9A7FA37FAF7FB27FB97FAE7FB67FB88B71
7FC57FC67FCA7FD57FD47FE17FE67FE97FF37FF998DC80068004800B80128018
8019801C80218028803F803B804A804680528058805A805F8062806880738072
807080768079807D807F808480868085809B8093809A80AD519080AC80DB80E5
80D980DD80C480DA80D6810980EF80F1811B81298123812F814B000000000000
E4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
968B8146813E8153815180FC8171816E81658166817481838188818A81808182
81A0819581A481A3815F819381A981B081B581BE81B881BD81C081C281BA81C9
81CD81D181D981D881C881DA81DF81E081E781FA81FB81FE8201820282058207
820A820D821082168229822B82388233824082598258825D825A825F82640000
82628268826A826B822E827182778278827E828D829282AB829F82BB82AC82E1
82E382DF82D282F482F382FA8393830382FB82F982DE830682DC830982D98335
83348316833283318340833983508345832F832B831783188385839A83AA839F
83A283968323838E8387838A837C83B58373837583A0838983A883F4841383EB
83CE83FD840383D8840B83C183F7840783E083F2840D8422842083BD84388506
83FB846D842A843C855A84848477846B84AD846E848284698446842C846F8479
843584CA846284B984BF849F84D984CD84BB84DA84D084C184C684D684A18521
84FF84F485178518852C851F8515851484FC8540856385588548000000000000
E5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
85418602854B8555858085A485888591858A85A8856D8594859B85EA8587859C
8577857E859085C985BA85CF85B985D085D585DD85E585DC85F9860A8613860B
85FE85FA86068622861A8630863F864D4E558654865F86678671869386A386A9
86AA868B868C86B686AF86C486C686B086C9882386AB86D486DE86E986EC0000
86DF86DB86EF8712870687088700870386FB87118709870D86F9870A8734873F
8737873B87258729871A8760875F8778874C874E877487578768876E87598753
8763876A880587A2879F878287AF87CB87BD87C087D096D687AB87C487B387C7
87C687BB87EF87F287E0880F880D87FE87F687F7880E87D28811881688158822
88218831883688398827883B8844884288528859885E8862886B8881887E889E
8875887D88B5887288828897889288AE889988A2888D88A488B088BF88B188C3
88C488D488D888D988DD88F9890288FC88F488E888F28904890C890A89138943
891E8925892A892B89418944893B89368938894C891D8960895E000000000000
E6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
89668964896D896A896F89748977897E89838988898A8993899889A189A989A6
89AC89AF89B289BA89BD89BF89C089DA89DC89DD89E789F489F88A038A168A10
8A0C8A1B8A1D8A258A368A418A5B8A528A468A488A7C8A6D8A6C8A628A858A82
8A848AA88AA18A918AA58AA68A9A8AA38AC48ACD8AC28ADA8AEB8AF38AE70000
8AE48AF18B148AE08AE28AF78ADE8ADB8B0C8B078B1A8AE18B168B108B178B20
8B3397AB8B268B2B8B3E8B288B418B4C8B4F8B4E8B498B568B5B8B5A8B6B8B5F
8B6C8B6F8B748B7D8B808B8C8B8E8B928B938B968B998B9A8C3A8C418C3F8C48
8C4C8C4E8C508C558C628C6C8C788C7A8C828C898C858C8A8C8D8C8E8C948C7C
8C98621D8CAD8CAA8CBD8CB28CB38CAE8CB68CC88CC18CE48CE38CDA8CFD8CFA
8CFB8D048D058D0A8D078D0F8D0D8D109F4E8D138CCD8D148D168D678D6D8D71
8D738D818D998DC28DBE8DBA8DCF8DDA8DD68DCC8DDB8DCB8DEA8DEB8DDF8DE3
8DFC8E088E098DFF8E1D8E1E8E108E1F8E428E358E308E348E4A000000000000
E7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8E478E498E4C8E508E488E598E648E608E2A8E638E558E768E728E7C8E818E87
8E858E848E8B8E8A8E938E918E948E998EAA8EA18EAC8EB08EC68EB18EBE8EC5
8EC88ECB8EDB8EE38EFC8EFB8EEB8EFE8F0A8F058F158F128F198F138F1C8F1F
8F1B8F0C8F268F338F3B8F398F458F428F3E8F4C8F498F468F4E8F578F5C0000
8F628F638F648F9C8F9F8FA38FAD8FAF8FB78FDA8FE58FE28FEA8FEF90878FF4
90058FF98FFA901190159021900D901E9016900B90279036903590398FF8904F
905090519052900E9049903E90569058905E9068906F907696A890729082907D
90819080908A9089908F90A890AF90B190B590E290E4624890DB910291129119
91329130914A9156915891639165916991739172918B9189918291A291AB91AF
91AA91B591B491BA91C091C191C991CB91D091D691DF91E191DB91FC91F591F6
921E91FF9214922C92159211925E925792459249926492489295923F924B9250
929C92969293929B925A92CF92B992B792E9930F92FA9344932E000000000000
E8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
93199322931A9323933A9335933B935C9360937C936E935693B093AC93AD9394
93B993D693D793E893E593D893C393DD93D093C893E4941A9414941394039407
94109436942B94359421943A944194529444945B94609462945E946A92299470
94759477947D945A947C947E9481947F95829587958A95949596959895990000
95A095A895A795AD95BC95BB95B995BE95CA6FF695C395CD95CC95D595D495D6
95DC95E195E595E296219628962E962F9642964C964F964B9677965C965E965D
965F96669672966C968D96989695969796AA96A796B196B296B096B496B696B8
96B996CE96CB96C996CD894D96DC970D96D596F99704970697089713970E9711
970F971697199724972A97309739973D973E97449746974897429749975C9760
97649766976852D2976B977197799785977C9781977A9786978B978F9790979C
97A897A697A397B397B497C397C697C897CB97DC97ED9F4F97F27ADF97F697F5
980F980C9838982498219837983D9846984F984B986B986F9870000000000000
E9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
98719874987398AA98AF98B198B698C498C398C698E998EB9903990999129914
99189921991D991E99249920992C992E993D993E9942994999459950994B9951
9952994C99559997999899A599AD99AE99BC99DF99DB99DD99D899D199ED99EE
99F199F299FB99F89A019A0F9A0599E29A199A2B9A379A459A429A409A430000
9A3E9A559A4D9A5B9A579A5F9A629A659A649A699A6B9A6A9AAD9AB09ABC9AC0
9ACF9AD19AD39AD49ADE9ADF9AE29AE39AE69AEF9AEB9AEE9AF49AF19AF79AFB
9B069B189B1A9B1F9B229B239B259B279B289B299B2A9B2E9B2F9B329B449B43
9B4F9B4D9B4E9B519B589B749B939B839B919B969B979B9F9BA09BA89BB49BC0
9BCA9BB99BC69BCF9BD19BD29BE39BE29BE49BD49BE19C3A9BF29BF19BF09C15
9C149C099C139C0C9C069C089C129C0A9C049C2E9C1B9C259C249C219C309C47
9C329C469C3E9C5A9C609C679C769C789CE79CEC9CF09D099D089CEB9D039D06
9D2A9D269DAF9D239D1F9D449D159D129D419D3F9D3E9D469D48000000000000
EA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9D5D9D5E9D649D519D509D599D729D899D879DAB9D6F9D7A9D9A9DA49DA99DB2
9DC49DC19DBB9DB89DBA9DC69DCF9DC29DD99DD39DF89DE69DED9DEF9DFD9E1A
9E1B9E1E9E759E799E7D9E819E889E8B9E8C9E929E959E919E9D9EA59EA99EB8
9EAA9EAD97619ECC9ECE9ECF9ED09ED49EDC9EDE9EDD9EE09EE59EE89EEF0000
9EF49EF69EF79EF99EFB9EFC9EFD9F079F0876B79F159F219F2C9F3E9F4A9F52
9F549F639F5F9F609F619F669F679F6C9F6A9F779F729F769F959F9C9FA0582F
69C79059746451DC719900000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
ED
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7E8A891C9348928884DC4FC970BB663168C892F966FB5F454E284EE14EFC4F00
4F034F394F564F924F8A4F9A4F944FCD504050224FFF501E5046507050425094
50F450D8514A5164519D51BE51EC5215529C52A652C052DB5300530753245372
539353B253DDFA0E549C548A54A954FF55865759576557AC57C857C7FA0F0000
FA10589E58B2590B5953595B595D596359A459BA5B565BC0752F5BD85BEC5C1E
5CA65CBA5CF55D275D53FA115D425D6D5DB85DB95DD05F215F345F675FB75FDE
605D6085608A60DE60D5612060F26111613761306198621362A663F56460649D
64CE654E66006615663B6609662E661E6624666566576659FA126673669966A0
66B266BF66FA670EF929676667BB685267C06801684468CFFA136968FA146998
69E26A306A6B6A466A736A7E6AE26AE46BD66C3F6C5C6C866C6F6CDA6D046D87
6D6F6D966DAC6DCF6DF86DF26DFC6E396E5C6E276E3C6EBF6F886FB56FF57005
70077028708570AB710F7104715C71467147FA1571C171FE72B1000000000000
EE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
72BE7324FA16737773BD73C973D673E373D2740773F57426742A7429742E7462
7489749F7501756F7682769C769E769B76A6FA17774652AF7821784E7864787A
7930FA18FA19FA1A7994FA1B799B7AD17AE7FA1C7AEB7B9EFA1D7D487D5C7DB7
7DA07DD67E527F477FA1FA1E83018362837F83C783F6844884B4855385590000
856BFA1F85B0FA20FA21880788F58A128A378A798AA78ABE8ADFFA228AF68B53
8B7F8CF08CF48D128D76FA238ECFFA24FA25906790DEFA269115912791DA91D7
91DE91ED91EE91E491E592069210920A923A9240923C924E9259925192399267
92A79277927892E792D792D992D0FA2792D592E092D39325932192FBFA28931E
92FF931D93029370935793A493C693DE93F89431944594489592F9DCFA29969D
96AF9733973B9743974D974F9751975598579865FA2AFA2B9927FA2C999E9A4E
9AD99ADC9B759B729B8F9BB19BBB9C009D709D6BFA2D9E199ED1000000002170
217121722173217421752176217721782179FFE2FFE4FF07FF02000000000000
FA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
2170217121722173217421752176217721782179216021612162216321642165
2166216721682169FFE2FFE4FF07FF0232312116212122357E8A891C93489288
84DC4FC970BB663168C892F966FB5F454E284EE14EFC4F004F034F394F564F92
4F8A4F9A4F944FCD504050224FFF501E504650705042509450F450D8514A0000
5164519D51BE51EC5215529C52A652C052DB5300530753245372539353B253DD
FA0E549C548A54A954FF55865759576557AC57C857C7FA0FFA10589E58B2590B
5953595B595D596359A459BA5B565BC0752F5BD85BEC5C1E5CA65CBA5CF55D27
5D53FA115D425D6D5DB85DB95DD05F215F345F675FB75FDE605D6085608A60DE
60D5612060F26111613761306198621362A663F56460649D64CE654E66006615
663B6609662E661E6624666566576659FA126673669966A066B266BF66FA670E
F929676667BB685267C06801684468CFFA136968FA14699869E26A306A6B6A46
6A736A7E6AE26AE46BD66C3F6C5C6C866C6F6CDA6D046D876D6F000000000000
FB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6D966DAC6DCF6DF86DF26DFC6E396E5C6E276E3C6EBF6F886FB56FF570057007
7028708570AB710F7104715C71467147FA1571C171FE72B172BE7324FA167377
73BD73C973D673E373D2740773F57426742A7429742E74627489749F7501756F
7682769C769E769B76A6FA17774652AF7821784E7864787A7930FA18FA190000
FA1A7994FA1B799B7AD17AE7FA1C7AEB7B9EFA1D7D487D5C7DB77DA07DD67E52
7F477FA1FA1E83018362837F83C783F6844884B485538559856BFA1F85B0FA20
FA21880788F58A128A378A798AA78ABE8ADFFA228AF68B538B7F8CF08CF48D12
8D76FA238ECFFA24FA25906790DEFA269115912791DA91D791DE91ED91EE91E4
91E592069210920A923A9240923C924E925992519239926792A79277927892E7
92D792D992D0FA2792D592E092D39325932192FBFA28931E92FF931D93029370
935793A493C693DE93F89431944594489592F9DCFA29969D96AF9733973B9743
974D974F9751975598579865FA2AFA2B9927FA2C999E9A4E9AD9000000000000
FC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9ADC9B759B729B8F9BB19BBB9C009D709D6BFA2D9E199ED10000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
R
8160 301C FF5E
8161 2016 2225
817C 2212 FF0D
8191 00A2 FFE0
8192 00A3 FFE1
81CA 00AC FFE2
81BE 222a
81BF 2229
81DA 2220
81DB 22a5
81DF 2261
81E0 2252
81E3 221a
81E6 2235
81E7 222b

2162
src/runtime/tcl_library/encoding/cp936.enc

File diff suppressed because it is too large Load Diff

2128
src/runtime/tcl_library/encoding/cp949.enc

File diff suppressed because it is too large Load Diff

1499
src/runtime/tcl_library/encoding/cp950.enc

File diff suppressed because it is too large Load Diff

20
src/runtime/tcl_library/encoding/dingbats.enc

@ -1,20 +0,0 @@
# Encoding file: dingbats, single-byte
S
003F 1 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
00202701270227032704260E2706270727082709261B261E270C270D270E270F
2710271127122713271427152716271727182719271A271B271C271D271E271F
2720272127222723272427252726272726052729272A272B272C272D272E272F
2730273127322733273427352736273727382739273A273B273C273D273E273F
2740274127422743274427452746274727482749274A274B25CF274D25A0274F
27502751275225B225BC25C6275625D727582759275A275B275C275D275E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000276127622763276427652766276726632666266526602460246124622463
2464246524662467246824692776277727782779277A277B277C277D277E277F
2780278127822783278427852786278727882789278A278B278C278D278E278F
2790279127922793279421922194219527982799279A279B279C279D279E279F
27A027A127A227A327A427A527A627A727A827A927AA27AB27AC27AD27AE27AF
000027B127B227B327B427B527B627B727B827B927BA27BB27BC27BD27BE0000

20
src/runtime/tcl_library/encoding/ebcdic.enc

@ -1,20 +0,0 @@
# Encoding file: ebcdic, single-byte
S
006F 0 1
00
0000000100020003008500090086007F0087008D008E000B000C000D000E000F
0010001100120013008F000A0008009700180019009C009D001C001D001E001F
0080008100820083008400920017001B00880089008A008B008C000500060007
0090009100160093009400950096000400980099009A009B00140015009E001A
002000A000E200E400E000E100E300E500E700F10060002E003C0028002B007C
002600E900EA00EB00E800ED00EE00EF00EC00DF00210024002A0029003B009F
002D002F00C200C400C000C100C300C500C700D1005E002C0025005F003E003F
00F800C900CA00CB00C800CD00CE00CF00CC00A8003A002300400027003D0022
00D800610062006300640065006600670068006900AB00BB00F000FD00FE00B1
00B0006A006B006C006D006E006F00700071007200AA00BA00E600B800C600A4
00B500AF0073007400750076007700780079007A00A100BF00D000DD00DE00AE
00A200A300A500B700A900A700B600BC00BD00BE00AC005B005C005D00B400D7
00F900410042004300440045004600470048004900AD00F400F600F200F300F5
00A6004A004B004C004D004E004F00500051005200B900FB00FC00DB00FA00FF
00D900F70053005400550056005700580059005A00B200D400D600D200D300D5
003000310032003300340035003600370038003900B3007B00DC007D00DA007E

1397
src/runtime/tcl_library/encoding/euc-cn.enc

File diff suppressed because it is too large Load Diff

1353
src/runtime/tcl_library/encoding/euc-jp.enc

File diff suppressed because it is too large Load Diff

1533
src/runtime/tcl_library/encoding/euc-kr.enc

File diff suppressed because it is too large Load Diff

1414
src/runtime/tcl_library/encoding/gb12345.enc

File diff suppressed because it is too large Load Diff

20
src/runtime/tcl_library/encoding/gb1988.enc

@ -1,20 +0,0 @@
# Encoding file: gb1988, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
002000210022002300A500250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D203E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

1380
src/runtime/tcl_library/encoding/gb2312-raw.enc

File diff suppressed because it is too large Load Diff

1397
src/runtime/tcl_library/encoding/gb2312.enc

File diff suppressed because it is too large Load Diff

12
src/runtime/tcl_library/encoding/iso2022-jp.enc

@ -1,12 +0,0 @@
# Encoding file: iso2022-jp, escape-driven
E
name iso2022-jp
init {}
final {}
ascii \x1b(B
jis0201 \x1b(J
jis0208 \x1b$B
jis0208 \x1b$@
jis0212 \x1b$(D
gb2312 \x1b$A
ksc5601 \x1b$(C

7
src/runtime/tcl_library/encoding/iso2022-kr.enc

@ -1,7 +0,0 @@
# Encoding file: iso2022-kr, escape-driven
E
name iso2022-kr
init \x1b$)C
final {}
iso8859-1 \x0f
ksc5601 \x0e

14
src/runtime/tcl_library/encoding/iso2022.enc

@ -1,14 +0,0 @@
# Encoding file: iso2022, escape-driven
E
name iso2022
init {}
final {}
iso8859-1 \x1b(B
jis0201 \x1b(J
gb1988 \x1b(T
jis0208 \x1b$B
jis0208 \x1b$@
jis0212 \x1b$(D
gb2312 \x1b$A
ksc5601 \x1b$(C
jis0208 \x1b&@\x1b$B

20
src/runtime/tcl_library/encoding/iso8859-1.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-1, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF

20
src/runtime/tcl_library/encoding/iso8859-10.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-10, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0010401120122012A0128013600A7013B011001600166017D00AD016A014A
00B0010501130123012B0129013700B7013C011101610167017E2015016B014B
010000C100C200C300C400C500C6012E010C00C9011800CB011600CD00CE00CF
00D00145014C00D300D400D500D6016800D8017200DA00DB00DC00DD00DE00DF
010100E100E200E300E400E500E6012F010D00E9011900EB011700ED00EE00EF
00F00146014D00F300F400F500F6016900F8017300FA00FB00FC00FD00FE0138

20
src/runtime/tcl_library/encoding/iso8859-11.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-11, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000

20
src/runtime/tcl_library/encoding/iso8859-13.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-13, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0201D00A200A300A4201E00A600A700D800A9015600AB00AC00AD00AE00C6
00B000B100B200B3201C00B500B600B700F800B9015700BB00BC00BD00BE00E6
0104012E0100010600C400C501180112010C00C90179011601220136012A013B
01600143014500D3014C00D500D600D701720141015A016A00DC017B017D00DF
0105012F0101010700E400E501190113010D00E9017A011701230137012B013C
01610144014600F3014D00F500F600F701730142015B016B00FC017C017E2019

20
src/runtime/tcl_library/encoding/iso8859-14.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-14, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A01E021E0300A3010A010B1E0A00A71E8000A91E821E0B1EF200AD00AE0178
1E1E1E1F012001211E401E4100B61E561E811E571E831E601EF31E841E851E61
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
017400D100D200D300D400D500D61E6A00D800D900DA00DB00DC00DD017600DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
017500F100F200F300F400F500F61E6B00F800F900FA00FB00FC00FD017700FF

20
src/runtime/tcl_library/encoding/iso8859-15.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-15, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A000A100A200A320AC00A5016000A7016100A900AA00AB00AC00AD00AE00AF
00B000B100B200B3017D00B500B600B7017E00B900BA00BB01520153017800BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF

20
src/runtime/tcl_library/encoding/iso8859-16.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-16, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A001040105014120AC201E016000A7016100A9021800AB017900AD017A017B
00B000B1010C0142017D201D00B600B7017E010D021900BB015201530178017C
00C000C100C2010200C4010600C600C700C800C900CA00CB00CC00CD00CE00CF
0110014300D200D300D4015000D6015A017000D900DA00DB00DC0118021A00DF
00E000E100E2010300E4010700E600E700E800E900EA00EB00EC00ED00EE00EF
0111014400F200F300F4015100F6015B017100F900FA00FB00FC0119021B00FF

20
src/runtime/tcl_library/encoding/iso8859-2.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-2, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0010402D8014100A4013D015A00A700A80160015E0164017900AD017D017B
00B0010502DB014200B4013E015B02C700B80161015F0165017A02DD017E017C
015400C100C2010200C40139010600C7010C00C9011800CB011A00CD00CE010E
01100143014700D300D4015000D600D70158016E00DA017000DC00DD016200DF
015500E100E2010300E4013A010700E7010D00E9011900EB011B00ED00EE010F
01110144014800F300F4015100F600F70159016F00FA017100FC00FD016302D9

20
src/runtime/tcl_library/encoding/iso8859-3.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-3, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0012602D800A300A40000012400A700A80130015E011E013400AD0000017B
00B0012700B200B300B400B5012500B700B80131015F011F013500BD0000017C
00C000C100C2000000C4010A010800C700C800C900CA00CB00CC00CD00CE00CF
000000D100D200D300D4012000D600D7011C00D900DA00DB00DC016C015C00DF
00E000E100E2000000E4010B010900E700E800E900EA00EB00EC00ED00EE00EF
000000F100F200F300F4012100F600F7011D00F900FA00FB00FC016D015D02D9

20
src/runtime/tcl_library/encoding/iso8859-4.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-4, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A001040138015600A40128013B00A700A8016001120122016600AD017D00AF
00B0010502DB015700B40129013C02C700B80161011301230167014A017E014B
010000C100C200C300C400C500C6012E010C00C9011800CB011600CD00CE012A
01100145014C013600D400D500D600D700D8017200DA00DB00DC0168016A00DF
010100E100E200E300E400E500E6012F010D00E9011900EB011700ED00EE012B
01110146014D013700F400F500F600F700F8017300FA00FB00FC0169016B02D9

20
src/runtime/tcl_library/encoding/iso8859-5.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-5, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0040104020403040404050406040704080409040A040B040C00AD040E040F
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
0430043104320433043404350436043704380439043A043B043C043D043E043F
0440044104420443044404450446044704480449044A044B044C044D044E044F
2116045104520453045404550456045704580459045A045B045C00A7045E045F

20
src/runtime/tcl_library/encoding/iso8859-6.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-6, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A000000000000000A40000000000000000000000000000060C00AD00000000
00000000000000000000000000000000000000000000061B000000000000061F
0000062106220623062406250626062706280629062A062B062C062D062E062F
0630063106320633063406350636063706380639063A00000000000000000000
0640064106420643064406450646064706480649064A064B064C064D064E064F
0650065106520000000000000000000000000000000000000000000000000000

20
src/runtime/tcl_library/encoding/iso8859-7.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-7, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A02018201900A320AC20AF00A600A700A800A9037A00AB00AC00AD00002015
00B000B100B200B303840385038600B703880389038A00BB038C00BD038E038F
0390039103920393039403950396039703980399039A039B039C039D039E039F
03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
03B003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
03C003C103C203C303C403C503C603C703C803C903CA03CB03CC03CD03CE0000

20
src/runtime/tcl_library/encoding/iso8859-8.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-8, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A0000000A200A300A400A500A600A700A800A900D700AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE0000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000002017
05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000

20
src/runtime/tcl_library/encoding/iso8859-9.enc

@ -1,20 +0,0 @@
# Encoding file: iso8859-9, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0080008100820083008400850086008700880089008A008B008C008D008E008F
0090009100920093009400950096009700980099009A009B009C009D009E009F
00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
011E00D100D200D300D400D500D600D700D800D900DA00DB00DC0130015E00DF
00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
011F00F100F200F300F400F500F600F700F800F900FA00FB00FC0131015F00FF

20
src/runtime/tcl_library/encoding/jis0201.enc

@ -1,20 +0,0 @@
# Encoding file: jis0201, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D203E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

1319
src/runtime/tcl_library/encoding/jis0208.enc

File diff suppressed because it is too large Load Diff

1159
src/runtime/tcl_library/encoding/jis0212.enc

File diff suppressed because it is too large Load Diff

20
src/runtime/tcl_library/encoding/koi8-r.enc

@ -1,20 +0,0 @@
# Encoding file: koi8-r, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
25002502250C251025142518251C2524252C2534253C258025842588258C2590
259125922593232025A02219221A22482264226500A0232100B000B200B700F7
25502551255204512553255425552556255725582559255A255B255C255D255E
255F25602561040125622563256425652566256725682569256A256B256C00A9
044E0430043104460434043504440433044504380439043A043B043C043D043E
043F044F044004410442044304360432044C044B04370448044D04490447044A
042E0410041104260414041504240413042504180419041A041B041C041D041E
041F042F042004210422042304160412042C042B04170428042D04290427042A

20
src/runtime/tcl_library/encoding/koi8-u.enc

@ -1,20 +0,0 @@
# Encoding file: koi8-u, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
25002502250C251025142518251C2524252C2534253C258025842588258C2590
259125922593232025A02219221A22482264226500A0232100B000B200B700F7
25502551255204510454255404560457255725582559255A255B0491255D255E
255F25602561040104032563040604072566256725682569256A0490256C00A9
044E0430043104460434043504440433044504380439043A043B043C043D043E
043F044F044004410442044304360432044C044B04370448044D04490447044A
042E0410041104260414041504240413042504180419041A041B041C041D041E
041F042F042004210422042304160412042C042B04170428042D04290427042A

1516
src/runtime/tcl_library/encoding/ksc5601.enc

File diff suppressed because it is too large Load Diff

20
src/runtime/tcl_library/encoding/macCentEuro.enc

@ -1,20 +0,0 @@
# Encoding file: macCentEuro, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C40100010100C9010400D600DC00E10105010C00E4010D0106010700E90179
017A010E00ED010F01120113011600F3011700F400F600F500FA011A011B00FC
202000B0011800A300A7202200B600DF00AE00A92122011900A822600123012E
012F012A22642265012B0136220222110142013B013C013D013E0139013A0145
0146014300AC221A01440147220600AB00BB202600A00148015000D50151014C
20132014201C201D2018201900F725CA014D0154015501582039203A01590156
01570160201A201E0161015A015B00C10164016500CD017D017E016A00D300D4
016B016E00DA016F017001710172017300DD00FD0137017B0141017C012202C7

20
src/runtime/tcl_library/encoding/macCroatian.enc

@ -1,20 +0,0 @@
# Encoding file: macCroatian, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE0160212200B400A82260017D00D8
221E00B122642265220600B522022211220F0161222B00AA00BA03A9017E00F8
00BF00A100AC221A01922248010600AB010C202600A000C000C300D501520153
01102014201C201D2018201900F725CAF8FF00A9204420AC2039203A00C600BB
201300B7201A201E203000C2010700C1010D00C800CD00CE00CF00CC00D300D4
011100D200DA00DB00D9013102C602DC00AF03C000CB02DA00B800CA00E602C7

20
src/runtime/tcl_library/encoding/macCyrillic.enc

@ -1,20 +0,0 @@
# Encoding file: macCyrillic, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
202000B0049000A300A7202200B6040600AE00A9212204020452226004030453
221E00B122642265045600B504910408040404540407045704090459040A045A
0458040500AC221A01922248220600AB00BB202600A0040B045B040C045C0455
20132014201C201D2018201900F7201E040E045E040F045F211604010451044F
0430043104320433043404350436043704380439043A043B043C043D043E043F
0440044104420443044404450446044704480449044A044B044C044D044E20AC

20
src/runtime/tcl_library/encoding/macDingbats.enc

@ -1,20 +0,0 @@
# Encoding file: macDingbats, single-byte
S
003F 1 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
00202701270227032704260E2706270727082709261B261E270C270D270E270F
2710271127122713271427152716271727182719271A271B271C271D271E271F
2720272127222723272427252726272726052729272A272B272C272D272E272F
2730273127322733273427352736273727382739273A273B273C273D273E273F
2740274127422743274427452746274727482749274A274B25CF274D25A0274F
27502751275225B225BC25C6275625D727582759275A275B275C275D275E007F
F8D7F8D8F8D9F8DAF8DBF8DCF8DDF8DEF8DFF8E0F8E1F8E2F8E3F8E400000000
0000000000000000000000000000000000000000000000000000000000000000
0000276127622763276427652766276726632666266526602460246124622463
2464246524662467246824692776277727782779277A277B277C277D277E277F
2780278127822783278427852786278727882789278A278B278C278D278E278F
2790279127922793279421922194219527982799279A279B279C279D279E279F
27A027A127A227A327A427A527A627A727A827A927AA27AB27AC27AD27AE27AF
000027B127B227B327B427B527B627B727B827B927BA27BB27BC27BD27BE0000

20
src/runtime/tcl_library/encoding/macGreek.enc

@ -1,20 +0,0 @@
# Encoding file: macGreek, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400B900B200C900B300D600DC038500E000E200E4038400A800E700E900E8
00EA00EB00A3212200EE00EF202200BD203000F400F600A600AD00F900FB00FC
2020039303940398039B039E03A000DF00AE00A903A303AA00A7226000B000B7
039100B12264226500A503920395039603970399039A039C03A603AB03A803A9
03AC039D00AC039F03A1224803A400AB00BB202600A003A503A7038603880153
20132015201C201D2018201900F70389038A038C038E03AD03AE03AF03CC038F
03CD03B103B203C803B403B503C603B303B703B903BE03BA03BB03BC03BD03BF
03C003CE03C103C303C403B803C903C203C703C503B603CA03CB039003B0F8A0

20
src/runtime/tcl_library/encoding/macIceland.enc

@ -1,20 +0,0 @@
# Encoding file: macIceland, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
00DD00B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
20132014201C201D2018201900F725CA00FF0178204420AC00D000F000DE00FE
00FD00B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9013102C602DC00AF02D802D902DA00B802DD02DB02C7

785
src/runtime/tcl_library/encoding/macJapan.enc

@ -1,785 +0,0 @@
# Encoding file: macJapan, multi-byte
M
003F 0 46
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00A0FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000A921222026
81
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8FF3E
203EFF3F30FD30FE309D309E30034EDD30053006300730FC20142010FF0FFF3C
301C2016FF5C22EF202520182019201C201DFF08FF0930143015FF3BFF3DFF5B
FF5D30083009300A300B300C300D300E300F30103011FF0B221200B100D70000
00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
FF0400A200A3FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C725C6
25A125A025B325B225BD25BC203B301221922190219121933013000000000000
000000000000000000000000000000002208220B2286228722822283222A2229
000000000000000000000000000000002227222800AC21D221D4220022030000
0000000000000000000000000000000000000000222022A52312220222072261
2252226A226B221A223D221D2235222B222C0000000000000000000000000000
212B2030266F266D266A2020202100B6000000000000000025EF000000000000
82
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000FF10
FF11FF12FF13FF14FF15FF16FF17FF18FF190000000000000000000000000000
FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30
FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3A000000000000000000000000
0000FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000003041
30423043304430453046304730483049304A304B304C304D304E304F30503051
30523053305430553056305730583059305A305B305C305D305E305F30603061
30623063306430653066306730683069306A306B306C306D306E306F30703071
30723073307430753076307730783079307A307B307C307D307E307F30803081
30823083308430853086308730883089308A308B308C308D308E308F30903091
3092309300000000000000000000000000000000000000000000000000000000
83
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
30A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF30B0
30B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF30C0
30C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF30D0
30D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF0000
30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
30F030F130F230F330F430F530F6000000000000000000000000000000000391
03920393039403950396039703980399039A039B039C039D039E039F03A003A1
03A303A403A503A603A703A803A90000000000000000000000000000000003B1
03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1
03C303C403C503C603C703C803C9000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
04100411041204130414041504010416041704180419041A041B041C041D041E
041F0420042104220423042404250426042704280429042A042B042C042D042E
042F000000000000000000000000000000000000000000000000000000000000
04300431043204330434043504510436043704380439043A043B043C043D0000
043E043F0440044104420443044404450446044704480449044A044B044C044D
044E044F00000000000000000000000000000000000000000000000000002500
2502250C251025182514251C252C25242534253C25012503250F2513251B2517
25232533252B253B254B2520252F25282537253F251D25302525253825420000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
85
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
2460246124622463246424652466246724682469246A246B246C246D246E246F
2470247124722473000000000000000000000000000000000000000024742475
2476247724782479247A247B247C247D247E247F248024812482248324842485
2486248700000000000000000000000000000000000000002776277727780000
2779277A277B277C277D277E0000000000000000000000000000000000000000
0000F8A124882489248A248B248C248D248E248F249000000000000000002160
216121622163216421652166216721682169216A216BF8A2F8A3F8A400000000
0000000000002170217121722173217421752176217721782179217A217BF8A5
F8A6F8A700000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000249C249D249E249F24A0
24A124A224A324A424A524A624A724A824A924AA24AB24AC24AD24AE24AF24B0
24B124B224B324B424B500000000000000000000000000000000000000000000
86
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
339C339F339D33A033A4F8A833A133A5339E33A2338EF8A9338F33C433963397
F8AA339833B333B233B133B0210933D433CB3390338533863387F8AB00000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000211633CD2121F8AC2664
2667266126622660266326652666000000000000000000000000000000000000
0000000000003020260E30040000000000000000000000000000000000000000
0000000000000000000000000000261E261C261D261F21C621C421C5F8AD21E8
21E621E721E9F8AEF8AFF8B0F8B1000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
87
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
3230322A322B322C322D322E322F32403237324232433239323A3231323E3234
3232323B323632333235323C323D323F32380000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000059275C0F32A432A532A632A732A832A93296329D3298329E63A732993349
3322334D3314331633053333334E330333363318331533273351334A33393357
330D334233233326333B332B00000000000000000000000000003300331E332A
3331334700000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000337E337D337C337B0000000000000000000000000000
0000000000000000000000000000000000000000337FF8B2F8B3000000000000
88
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
222E221F22BF0000000000000000000000000000000000000000000000000000
0000000000000000301DF8B40000000000000000000000000000000000000000
000000000000000000000000000000003094000030F730F830F930FA00000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000004E9C
55165A03963F54C0611B632859F690228475831C7A5060AA63E16E2565ED8466
82A69BF56893572765A162715B9B59D0867B98F47D627DBE9B8E62167C9F88B7
5B895EB563096697684895C7978D674F4EE54F0A4F4D4F9D504956F2593759D4
5A015C0960DF610F61706613690570BA754F757079FB7DAD7DEF80C3840E8863
8B029055907A533B4E954EA557DF80B290C178EF4E0058F16EA290387A328328
828B9C2F5141537054BD54E156E059FB5F1598F26DEB80E4852D000000000000
89
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9662967096A097FB540B53F35B8770CF7FBD8FC296E8536F9D5C7ABA4E117893
81FC6E26561855046B1D851A9C3B59E553A96D6674DC958F56424E91904B96F2
834F990C53E155B65B305F71662066F368046C386CF36D29745B76C87A4E9834
82F1885B8A6092ED6DB275AB76CA99C560A68B018D8A95B2698E53AD51860000
5712583059445BB45EF6602863A963F46CBF6F14708E7114715971D5733F7E01
827682D185979060925B9D1B586965BC6C5A752551F9592E59655F805FDC62BC
65FA6A2A6B276BB4738B7FC189569D2C9D0E9EC45CA16C96837B51045C4B61B6
81C6687672614E594FFA537860696E297A4F97F34E0B53164EEE4F554F3D4FA1
4F7352A053EF5609590F5AC15BB65BE179D16687679C67B66B4C6CB3706B73C2
798D79BE7A3C7B8782B182DB8304837783EF83D387668AB256298CA88FE6904E
971E868A4FC45CE862117259753B81E582BD86FE8CC096C5991399D54ECB4F1A
89E356DE584A58CA5EFB5FEB602A6094606261D0621262D06539000000000000
8A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9B41666668B06D777070754C76867D7582A587F9958B968E8C9D51F152BE5916
54B35BB35D16616869826DAF788D84CB88578A7293A79AB86D6C99A886D957A3
67FF86CE920E5283568754045ED362E164B9683C68386BBB737278BA7A6B899A
89D28D6B8F0390ED95A3969497695B665CB3697D984D984E639B7B206A2B0000
6A7F68B69C0D6F5F5272559D607062EC6D3B6E076ED1845B89108F444E149C39
53F6691B6A3A9784682A515C7AC384B291DC938C565B9D286822830584317CA5
520882C574E64E7E4F8351A05BD2520A52D852E75DFB559A582A59E65B8C5B98
5BDB5E725E7960A3611F616361BE63DB656267D1685368FA6B3E6B536C576F22
6F976F4574B0751876E3770B7AFF7BA17C217DE97F367FF0809D8266839E89B3
8ACC8CAB908494519593959195A2966597D3992882184E38542B5CB85DCC73A9
764C773C5CA97FEB8D0B96C19811985498584F014F0E5371559C566857FA5947
5B095BC45C905E0C5E7E5FCC63EE673A65D765E2671F68CB68C4000000000000
8B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A5F5E306BC56C176C7D757F79485B637A007D005FBD898F8A188CB48D778ECC
8F1D98E29A0E9B3C4E80507D510059935B9C622F628064EC6B3A72A075917947
7FA987FB8ABC8B7063AC83CA97A05409540355AB68546A588A70782767759ECD
53745BA2811A865090064E184E454EC74F1153CA54385BAE5F13602565510000
673D6C426C726CE3707874037A767AAE7B087D1A7CFE7D6665E7725B53BB5C45
5DE862D262E063196E20865A8A318DDD92F86F0179A69B5A4EA84EAB4EAC4F9B
4FA050D151477AF6517151F653545321537F53EB55AC58835CE15F375F4A602F
6050606D631F65596A4B6CC172C272ED77EF80F881058208854E90F793E197FF
99579A5A4EF051DD5C2D6681696D5C4066F26975738968507C8150C552E45747
5DFE932665A46B236B3D7434798179BD7B4B7DCA82B983CC887F895F8B398FD1
91D1541F92804E5D503653E5533A72D7739677E982E68EAF99C699C899D25177
611A865E55B07A7A50765BD3904796854E326ADB91E75C515C48000000000000
8C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
63987A9F6C9397748F617AAA718A96887C8268177E706851936C52F2541B85AB
8A137FA48ECD90E15366888879414FC250BE521151445553572D73EA578B5951
5F625F8460756176616761A963B2643A656C666F68426E1375667A3D7CFB7D4C
7D997E4B7F6B830E834A86CD8A088A638B668EFD981A9D8F82B88FCE9BE80000
5287621F64836FC09699684150916B206C7A6F547A747D5088408A2367084EF6
503950265065517C5238526355A7570F58055ACC5EFA61B261F862F36372691C
6A29727D72AC732E7814786F7D79770C80A9898B8B198CE28ED290639375967A
98559A139E785143539F53B35E7B5F266E1B6E90738473FE7D4382378A008AFA
96504E4E500B53E4547C56FA59D15B645DF15EAB5F276238654567AF6E5672D0
7CCA88B480A180E183F0864E8A878DE8923796C798679F134E944E924F0D5348
5449543E5A2F5F8C5FA1609F68A76A8E745A78818A9E8AA48B7791904E5E9BC9
4EA44F7C4FAF501950165149516C529F52B952FE539A53E35411000000000000
8D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
540E5589575157A2597D5B545B5D5B8F5DE55DE75DF75E785E835E9A5EB75F18
6052614C629762D863A7653B6602664366F4676D6821689769CB6C5F6D2A6D69
6E2F6E9D75327687786C7A3F7CE07D057D187D5E7DB18015800380AF80B18154
818F822A8352884C88618B1B8CA28CFC90CA91759271783F92FC95A4964D0000
980599999AD89D3B525B52AB53F7540858D562F76FE08C6A8F5F9EB9514B523B
544A56FD7A4091779D609ED273446F09817075115FFD60DA9AA872DB8FBC6B64
98034ECA56F0576458BE5A5A606861C7660F6606683968B16DF775D57D3A826E
9B424E9B4F5053C955065D6F5DE65DEE67FB6C99747378028A50939688DF5750
5EA7632B50B550AC518D670054C9585E59BB5BB05F69624D63A1683D6B736E08
707D91C7728078157826796D658E7D3083DC88C18F09969B5264572867507F6A
8CA151B45742962A583A698A80B454B25D0E57FC78959DFA4F5C524A548B643E
6628671467F57A847B567D22932F685C9BAD7B395319518A5237000000000000
8E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5BDF62F664AE64E6672D6BBA85A996D176909BD6634C93069BAB76BF66524E09
509853C25C7160E864926563685F71E673CA75237B977E8286958B838CDB9178
991065AC66AB6B8B4ED54ED44F3A4F7F523A53F853F255E356DB58EB59CB59C9
59FF5B505C4D5E025E2B5FD7601D6307652F5B5C65AF65BD65E8679D6B620000
6B7B6C0F7345794979C17CF87D197D2B80A2810281F389968A5E8A698A668A8C
8AEE8CC78CDC96CC98FC6B6F4E8B4F3C4F8D51505B575BFA6148630166426B21
6ECB6CBB723E74BD75D478C1793A800C803381EA84948F9E6C509E7F5F0F8B58
9D2B7AFA8EF85B8D96EB4E0353F157F759315AC95BA460896E7F6F0675BE8CEA
5B9F85007BE0507267F4829D5C61854A7E1E820E51995C0463688D66659C716E
793E7D1780058B1D8ECA906E86C790AA501F52FA5C3A6753707C7235914C91C8
932B82E55BC25F3160F94E3B53D65B88624B67316B8A72E973E07A2E816B8DA3
91529996511253D7546A5BFF63886A397DAC970056DA53CE5468000000000000
8F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5B975C315DDE4FEE610162FE6D3279C079CB7D427E4D7FD281ED821F84908846
89728B908E748F2F9031914B916C96C6919C4EC04F4F514553415F93620E67D4
6C416E0B73637E2691CD928353D459195BBF6DD1795D7E2E7C9B587E719F51FA
88538FF04FCA5CFB662577AC7AE3821C99FF51C65FAA65EC696F6B896DF30000
6E966F6476FE7D145DE190759187980651E6521D6240669166D96E1A5EB67DD2
7F7266F885AF85F78AF852A953D959735E8F5F90605592E4966450B7511F52DD
5320534753EC54E8554655315617596859BE5A3C5BB55C065C0F5C115C1A5E84
5E8A5EE05F70627F628462DB638C63776607660C662D6676677E68A26A1F6A35
6CBC6D886E096E58713C7126716775C77701785D7901796579F07AE07B117CA7
7D39809683D6848B8549885D88F38A1F8A3C8A548A738C618CDE91A49266937E
9418969C97984E0A4E084E1E4E575197527057CE583458CC5B225E3860C564FE
676167566D4472B675737A6384B88B7291B89320563157F498FE000000000000
90
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
62ED690D6B9671ED7E548077827289E698DF87558FB15C3B4F384FE14FB55507
5A205BDD5BE95FC3614E632F65B0664B68EE699B6D786DF1753375B9771F795E
79E67D3381E382AF85AA89AA8A3A8EAB8F9B903291DD97074EBA4EC152035875
58EC5C0B751A5C3D814E8A0A8FC59663976D7B258ACF9808916256F353A80000
9017543957825E2563A86C34708A77617C8B7FE088709042915493109318968F
745E9AC45D075D69657067A28DA896DB636E6749691983C5981796C088FE6F84
647A5BF84E16702C755D662F51C4523652E259D35F8160276210653F6574661F
667468F268166B636E057272751F76DB7CBE805658F088FD897F8AA08A938ACB
901D91929752975965897A0E810696BB5E2D60DC621A65A56614679077F37A4D
7C4D7E3E810A8CAC8D648DE18E5F78A9520762D963A5644262988A2D7A837BC0
8AAC96EA7D76820C87494ED95148534353605BA35C025C165DDD6226624764B0
681368346CC96D456D1767D36F5C714E717D65CB7A7F7BAD7DDA000000000000
91
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7E4A7FA8817A821B823985A68A6E8CCE8DF59078907792AD929195839BAE524D
55846F387136516879857E5581B37CCE564C58515CA863AA66FE66FD695A72D9
758F758E790E795679DF7C977D207D4486078A34963B90619F2050E7527553CC
53E2500955AA58EE594F723D5B8B5C64531D60E360F3635C6383633F63BB0000
64CD65E966F95DE369CD69FD6F1571E54E8975E976F87A937CDF7DCF7D9C8061
83498358846C84BC85FB88C58D709001906D9397971C9A1250CF5897618E81D3
85358D0890204FC3507452475373606F6349675F6E2C8DB3901F4FD75C5E8CCA
65CF7D9A53528896517663C35B585B6B5C0A640D6751905C4ED6591A592A6C70
8A51553E581559A560F0625367C182356955964099C49A284F5358065BFE8010
5CB15E2F5F856020614B623466FF6CF06EDE80CE817F82D4888B8CB89000902E
968A9EDB9BDB4EE353F059277B2C918D984C9DF96EDD7027535355445B856258
629E62D36CA26FEF74228A1794386FC18AFE833851E786F853EA000000000000
92
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
53E94F4690548FB0596A81315DFD7AEA8FBF68DA8C3772F89C486A3D8AB04E39
53585606576662C563A265E66B4E6DE16E5B70AD77ED7AEF7BAA7DBB803D80C6
86CB8A95935B56E358C75F3E65AD66966A806BB575378AC7502477E557305F1B
6065667A6C6075F47A1A7F6E81F48718904599B37BC9755C7AF97B5184C40000
901079E97A9283365AE177404E2D4EF25B995FE062BD663C67F16CE8866B8877
8A3B914E92F399D06A177026732A82E784578CAF4E01514651CB558B5BF55E16
5E335E815F145F355F6B5FB461F2631166A2671D6F6E7252753A773A80748139
817887768ABF8ADC8D858DF3929A957798029CE552C5635776F467156C8873CD
8CC393AE96736D25589C690E69CC8FFD939A75DB901A585A680263B469FB4F43
6F2C67D88FBB85267DB49354693F6F70576A58F75B2C7D2C722A540A91E39DB4
4EAD4F4E505C507552438C9E544858245B9A5E1D5E955EAD5EF75F1F608C62B5
633A63D068AF6C407887798E7A0B7DE082478A028AE68E449013000000000000
93
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
90B8912D91D89F0E6CE5645864E265756EF476847B1B906993D16EBA54F25FB9
64A48F4D8FED92445178586B59295C555E976DFB7E8F751C8CBC8EE2985B70B9
4F1D6BBF6FB1753096FB514E54105835585759AC5C605F926597675C6E21767B
83DF8CED901490FD934D7825783A52AA5EA6571F597460125012515A51AC0000
51CD520055105854585859575B955CF65D8B60BC6295642D6771684368BC68DF
76D76DD86E6F6D9B706F71C85F5375D879777B497B547B527CD67D7152308463
856985E48A0E8B048C468E0F9003900F94199676982D9A3095D850CD52D5540C
58025C0E61A7649E6D1E77B37AE580F48404905392855CE09D07533F5F975FB3
6D9C7279776379BF7BE46BD272EC8AAD68036A6151F87A8169345C4A9CF682EB
5BC59149701E56785C6F60C765666C8C8C5A90419813545166C7920D594890A3
51854E4D51EA85998B0E7058637A934B696299B47E047577535769608EDF96E3
6C5D4E8C5C3C5F108FE953028CD1808986795EFF65E54E735165000000000000
94
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59825C3F97EE4EFB598A5FCD8A8D6FE179B079625BE78471732B71B15E745FF5
637B649A71C37C984E435EFC4E4B57DC56A260A96FC37D0D80FD813381BF8FB2
899786A45DF4628A64AD898767776CE26D3E743678345A467F7582AD99AC4FF3
5EC362DD63926557676F76C3724C80CC80BA8F29914D500D57F95A9268850000
6973716472FD8CB758F28CE0966A9019877F79E477E784294F2F5265535A62CD
67CF6CCA767D7B947C95823685848FEB66DD6F2072067E1B83AB99C19EA651FD
7BB178727BB880877B486AE85E61808C75517560516B92626E8C767A91979AEA
4F107F70629C7B4F95A59CE9567A585986E496BC4F345224534A53CD53DB5E06
642C6591677F6C3E6C4E724872AF73ED75547E41822C85E98CA97BC491C67169
981298EF633D6669756A76E478D0854386EE532A5351542659835E875F7C60B2
6249627962AB65906BD46CCC75B276AE789179D87DCB7F7780A588AB8AB98CBB
907F975E98DB6A0B7C3850995C3E5FAE67876BD8743577097F8E000000000000
95
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9F3B67CA7A175339758B9AED5F66819D83F180985F3C5FC575627B46903C6867
59EB5A9B7D10767E8B2C4FF55F6A6A196C376F0274E2796888688A558C795EDF
63CF75C579D282D7932892F2849C86ED9C2D54C15F6C658C6D5C70158CA78CD3
983B654F74F64E0D4ED857E0592B5A665BCC51A85E035E9C6016627665770000
65A7666E6D6E72367B268150819A82998B5C8CA08CE68D74961C96444FAE64AB
6B66821E8461856A90E85C01695398A8847A85574F0F526F5FA95E45670D798F
8179890789866DF55F1762556CB84ECF72699B925206543B567458B361A4626E
711A596E7C897CDE7D1B96F06587805E4E194F75517558405E635E735F0A67C4
4E26853D9589965B7C73980150FB58C1765678A7522577A585117B86504F5909
72477BC77DE88FBA8FD4904D4FBF52C95A295F0197AD4FDD821792EA57036355
6B69752B88DC8F147A4252DF58936155620A66AE6BCD7C3F83E950234FF85305
5446583159495B9D5CF05CEF5D295E9662B16367653E65B9670B000000000000
96
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6CD56CE170F978327E2B80DE82B3840C84EC870289128A2A8C4A90A692D298FD
9CF39D6C4E4F4EA1508D5256574A59A85E3D5FD85FD9623F66B4671B67D068D2
51927D2180AA81A88B008C8C8CBF927E96325420982C531750D5535C58A864B2
6734726777667A4691E652C36CA16B8658005E4C5954672C7FFB51E176C60000
646978E89B549EBB57CB59B96627679A6BCE54E969D95E55819C67959BAA67FE
9C52685D4EA64FE353C862B9672B6CAB8FC44FAD7E6D9EBF4E0761626E806F2B
85135473672A9B455DF37B955CAC5BC6871C6E4A84D17A14810859997C8D6C11
772052D959227121725F77DB97279D61690B5A7F5A1851A5540D547D660E76DF
8FF792989CF459EA725D6EC5514D68C97DBF7DEC97629EBA64786A2183025984
5B5F6BDB731B76F27DB280178499513267289ED976EE676252FF99055C24623B
7C7E8CB0554F60B67D0B958053014E5F51B6591C723A803691CE5F2577E25384
5F797D0485AC8A338E8D975667F385AE9453610961086CB97652000000000000
97
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8AED8F38552F4F51512A52C753CB5BA55E7D60A0618263D6670967DA6E676D8C
733673377531795088D58A98904A909190F596C4878D59154E884F594E0E8A89
8F3F981050AD5E7C59965BB95EB863DA63FA64C166DC694A69D86D0B6EB67194
75287AAF7F8A8000844984C989818B218E0A9065967D990A617E62916B320000
6C836D747FCC7FFC6DC07F8587BA88F8676583B1983C96F76D1B7D61843D916A
4E7153755D506B046FEB85CD862D89A75229540F5C65674E68A87406748375E2
88CF88E191CC96E296785F8B73877ACB844E63A0756552896D416E9C74097559
786B7C9296867ADC9F8D4FB6616E65C5865C4E864EAE50DA4E2151CC5BEE6599
68816DBC731F764277AD7A1C7CE7826F8AD2907C91CF96759818529B7DD1502B
539867976DCB71D0743381E88F2A96A39C579E9F746058416D997D2F985E4EE4
4F364F8B51B752B15DBA601C73B2793C82D3923496B796F6970A9E979F6266A6
6B74521752A370C888C25EC9604B61906F2371497C3E7DF4806F000000000000
98
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84EE9023932C54429B6F6AD370898CC28DEF973252B45A415ECA5F046717697C
69946D6A6F0F726272FC7BED8001807E874B90CE516D9E937984808B93328AD6
502D548C8A716B6A8CC4810760D167A09DF24E994E989C108A6B85C185686900
6E7E789781550000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000005F0C
4E104E154E2A4E314E364E3C4E3F4E424E564E584E824E858C6B4E8A82125F0D
4E8E4E9E4E9F4EA04EA24EB04EB34EB64ECE4ECD4EC44EC64EC24ED74EDE4EED
4EDF4EF74F094F5A4F304F5B4F5D4F574F474F764F884F8F4F984F7B4F694F70
4F914F6F4F864F9651184FD44FDF4FCE4FD84FDB4FD14FDA4FD04FE44FE5501A
50285014502A502550054F1C4FF650215029502C4FFE4FEF5011500650435047
6703505550505048505A5056506C50785080509A508550B450B2000000000000
99
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
50C950CA50B350C250D650DE50E550ED50E350EE50F950F55109510151025116
51155114511A5121513A5137513C513B513F51405152514C515451627AF85169
516A516E5180518256D8518C5189518F519151935195519651A451A651A251A9
51AA51AB51B351B151B251B051B551BD51C551C951DB51E0865551E951ED0000
51F051F551FE5204520B5214520E5227522A522E52335239524F5244524B524C
525E5254526A527452695273527F527D528D529452925271528852918FA88FA7
52AC52AD52BC52B552C152CD52D752DE52E352E698ED52E052F352F552F852F9
530653087538530D5310530F5315531A5323532F533153335338534053465345
4E175349534D51D6535E5369536E5918537B53775382539653A053A653A553AE
53B053B653C37C1296D953DF66FC71EE53EE53E853ED53FA5401543D5440542C
542D543C542E54365429541D544E548F5475548E545F5471547754705492547B
5480547654845490548654C754A254B854A554AC54C454C854A8000000000000
9A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
54AB54C254A454BE54BC54D854E554E6550F551454FD54EE54ED54FA54E25539
55405563554C552E555C55455556555755385533555D5599558054AF558A559F
557B557E5598559E55AE557C558355A9558755A855DA55C555DF55C455DC55E4
55D4561455F7561655FE55FD561B55F9564E565071DF56345636563256380000
566B5664562F566C566A56865680568A56A05694568F56A556AE56B656B456C2
56BC56C156C356C056C856CE56D156D356D756EE56F9570056FF570457095708
570B570D57135718571655C7571C572657375738574E573B5740574F576957C0
57885761577F5789579357A057B357A457AA57B057C357C657D457D257D3580A
57D657E3580B5819581D587258215862584B58706BC05852583D5879588558B9
589F58AB58BA58DE58BB58B858AE58C558D358D158D758D958D858E558DC58E4
58DF58EF58FA58F958FB58FC58FD5902590A5910591B68A65925592C592D5932
5938593E7AD259555950594E595A5958596259605967596C5969000000000000
9B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59785981599D4F5E4FAB59A359B259C659E859DC598D59D959DA5A255A1F5A11
5A1C5A095A1A5A405A6C5A495A355A365A625A6A5A9A5ABC5ABE5ACB5AC25ABD
5AE35AD75AE65AE95AD65AFA5AFB5B0C5B0B5B165B325AD05B2A5B365B3E5B43
5B455B405B515B555B5A5B5B5B655B695B705B735B755B7865885B7A5B800000
5B835BA65BB85BC35BC75BC95BD45BD05BE45BE65BE25BDE5BE55BEB5BF05BF6
5BF35C055C075C085C0D5C135C205C225C285C385C395C415C465C4E5C535C50
5C4F5B715C6C5C6E4E625C765C795C8C5C915C94599B5CAB5CBB5CB65CBC5CB7
5CC55CBE5CC75CD95CE95CFD5CFA5CED5D8C5CEA5D0B5D155D175D5C5D1F5D1B
5D115D145D225D1A5D195D185D4C5D525D4E5D4B5D6C5D735D765D875D845D82
5DA25D9D5DAC5DAE5DBD5D905DB75DBC5DC95DCD5DD35DD25DD65DDB5DEB5DF2
5DF55E0B5E1A5E195E115E1B5E365E375E445E435E405E4E5E575E545E5F5E62
5E645E475E755E765E7A9EBC5E7F5EA05EC15EC25EC85ED05ECF000000000000
9C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5ED65EE35EDD5EDA5EDB5EE25EE15EE85EE95EEC5EF15EF35EF05EF45EF85EFE
5F035F095F5D5F5C5F0B5F115F165F295F2D5F385F415F485F4C5F4E5F2F5F51
5F565F575F595F615F6D5F735F775F835F825F7F5F8A5F885F915F875F9E5F99
5F985FA05FA85FAD5FBC5FD65FFB5FE45FF85FF15FDD60B35FFF602160600000
601960106029600E6031601B6015602B6026600F603A605A6041606A6077605F
604A6046604D6063604360646042606C606B60596081608D60E76083609A6084
609B60966097609260A7608B60E160B860E060D360B45FF060BD60C660B560D8
614D6115610660F660F7610060F460FA6103612160FB60F1610D610E6147613E
61286127614A613F613C612C6134613D614261446173617761586159615A616B
6174616F61656171615F615D6153617561996196618761AC6194619A618A6191
61AB61AE61CC61CA61C961F761C861C361C661BA61CB7F7961CD61E661E361F6
61FA61F461FF61FD61FC61FE620062086209620D620C6214621B000000000000
9D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
621E6221622A622E6230623262336241624E625E6263625B62606268627C6282
6289627E62926293629662D46283629462D762D162BB62CF62FF62C664D462C8
62DC62CC62CA62C262C7629B62C9630C62EE62F163276302630862EF62F56350
633E634D641C634F6396638E638063AB637663A3638F6389639F63B5636B0000
636963BE63E963C063C663E363C963D263F663C4641664346406641364266436
651D64176428640F6467646F6476644E652A6495649364A564A9648864BC64DA
64D264C564C764BB64D864C264F164E7820964E064E162AC64E364EF652C64F6
64F464F264FA650064FD6518651C650565246523652B65346535653765366538
754B654865566555654D6558655E655D65726578658265838B8A659B659F65AB
65B765C365C665C165C465CC65D265DB65D965E065E165F16772660A660365FB
6773663566366634661C664F664466496641665E665D666466676668665F6662
667066836688668E668966846698669D66C166B966C966BE66BC000000000000
9E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
66C466B866D666DA66E0663F66E666E966F066F566F7670F6716671E67266727
9738672E673F67366741673867376746675E67606759676367646789677067A9
677C676A678C678B67A667A1678567B767EF67B467EC67B367E967B867E467DE
67DD67E267EE67B967CE67C667E76A9C681E684668296840684D6832684E0000
68B3682B685968636877687F689F688F68AD6894689D689B68836AAE68B96874
68B568A068BA690F688D687E690168CA690868D86922692668E1690C68CD68D4
68E768D569366912690468D768E3692568F968E068EF6928692A691A69236921
68C669796977695C6978696B6954697E696E69396974693D695969306961695E
695D6981696A69B269AE69D069BF69C169D369BE69CE5BE869CA69DD69BB69C3
69A76A2E699169A0699C699569B469DE69E86A026A1B69FF6B0A69F969F269E7
6A0569B16A1E69ED6A1469EB6A0A6A126AC16A236A136A446A0C6A726A366A78
6A476A626A596A666A486A386A226A906A8D6AA06A846AA26AA3000000000000
9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A9786176ABB6AC36AC26AB86AB36AAC6ADE6AD16ADF6AAA6ADA6AEA6AFB6B05
86166AFA6B126B169B316B1F6B386B3776DC6B3998EE6B476B436B496B506B59
6B546B5B6B5F6B616B786B796B7F6B806B846B836B8D6B986B956B9E6BA46BAA
6BAB6BAF6BB26BB16BB36BB76BBC6BC66BCB6BD36BDF6BEC6BEB6BF36BEF0000
9EBE6C086C136C146C1B6C246C236C5E6C556C626C6A6C826C8D6C9A6C816C9B
6C7E6C686C736C926C906CC46CF16CD36CBD6CD76CC56CDD6CAE6CB16CBE6CBA
6CDB6CEF6CD96CEA6D1F884D6D366D2B6D3D6D386D196D356D336D126D0C6D63
6D936D646D5A6D796D596D8E6D956FE46D856DF96E156E0A6DB56DC76DE66DB8
6DC66DEC6DDE6DCC6DE86DD26DC56DFA6DD96DE46DD56DEA6DEE6E2D6E6E6E2E
6E196E726E5F6E3E6E236E6B6E2B6E766E4D6E1F6E436E3A6E4E6E246EFF6E1D
6E386E826EAA6E986EC96EB76ED36EBD6EAF6EC46EB26ED46ED56E8F6EA56EC2
6E9F6F416F11704C6EEC6EF86EFE6F3F6EF26F316EEF6F326ECC000000000000
E0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6F3E6F136EF76F866F7A6F786F816F806F6F6F5B6FF36F6D6F826F7C6F586F8E
6F916FC26F666FB36FA36FA16FA46FB96FC66FAA6FDF6FD56FEC6FD46FD86FF1
6FEE6FDB7009700B6FFA70117001700F6FFE701B701A6F74701D7018701F7030
703E7032705170637099709270AF70F170AC70B870B370AE70DF70CB70DD0000
70D9710970FD711C711971657155718871667162714C7156716C718F71FB7184
719571A871AC71D771B971BE71D271C971D471CE71E071EC71E771F571FC71F9
71FF720D7210721B7228722D722C72307232723B723C723F72407246724B7258
7274727E7282728172877292729672A272A772B972B272C372C672C472CE72D2
72E272E072E172F972F7500F7317730A731C7316731D7334732F73297325733E
734E734F9ED87357736A7368737073787375737B737A73C873B373CE73BB73C0
73E573EE73DE74A27405746F742573F87432743A7455743F745F74597441745C
746974707463746A7476747E748B749E74A774CA74CF74D473F1000000000000
E1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
74E074E374E774E974EE74F274F074F174F874F7750475037505750C750E750D
75157513751E7526752C753C7544754D754A7549755B7546755A756975647567
756B756D75787576758675877574758A758975827594759A759D75A575A375C2
75B375C375B575BD75B875BC75B175CD75CA75D275D975E375DE75FE75FF0000
75FC760175F075FA75F275F3760B760D7609761F762776207621762276247634
7630763B764776487646765C76587661766276687669766A7667766C76707672
76767678767C768076837688768B768E769676937699769A76B076B476B876B9
76BA76C276CD76D676D276DE76E176E576E776EA862F76FB7708770777047729
7724771E77257726771B773777387747775A7768776B775B7765777F777E7779
778E778B779177A0779E77B077B677B977BF77BC77BD77BB77C777CD77D777DA
77DC77E377EE77FC780C781279267820792A7845788E78747886787C789A788C
78A378B578AA78AF78D178C678CB78D478BE78BC78C578CA78EC000000000000
E2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
78E778DA78FD78F47907791279117919792C792B794079607957795F795A7955
7953797A797F798A799D79A79F4B79AA79AE79B379B979BA79C979D579E779EC
79E179E37A087A0D7A187A197A207A1F79807A317A3B7A3E7A377A437A577A49
7A617A627A699F9D7A707A797A7D7A887A977A957A987A967AA97AC87AB00000
7AB67AC57AC47ABF90837AC77ACA7ACD7ACF7AD57AD37AD97ADA7ADD7AE17AE2
7AE67AED7AF07B027B0F7B0A7B067B337B187B197B1E7B357B287B367B507B7A
7B047B4D7B0B7B4C7B457B757B657B747B677B707B717B6C7B6E7B9D7B987B9F
7B8D7B9C7B9A7B8B7B927B8F7B5D7B997BCB7BC17BCC7BCF7BB47BC67BDD7BE9
7C117C147BE67BE57C607C007C077C137BF37BF77C177C0D7BF67C237C277C2A
7C1F7C377C2B7C3D7C4C7C437C547C4F7C407C507C587C5F7C647C567C657C6C
7C757C837C907CA47CAD7CA27CAB7CA17CA87CB37CB27CB17CAE7CB97CBD7CC0
7CC57CC27CD87CD27CDC7CE29B3B7CEF7CF27CF47CF67CFA7D06000000000000
E3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7D027D1C7D157D0A7D457D4B7D2E7D327D3F7D357D467D737D567D4E7D727D68
7D6E7D4F7D637D937D897D5B7D8F7D7D7D9B7DBA7DAE7DA37DB57DC77DBD7DAB
7E3D7DA27DAF7DDC7DB87D9F7DB07DD87DDD7DE47DDE7DFB7DF27DE17E057E0A
7E237E217E127E317E1F7E097E0B7E227E467E667E3B7E357E397E437E370000
7E327E3A7E677E5D7E567E5E7E597E5A7E797E6A7E697E7C7E7B7E837DD57E7D
8FAE7E7F7E887E897E8C7E927E907E937E947E967E8E7E9B7E9C7F387F3A7F45
7F4C7F4D7F4E7F507F517F557F547F587F5F7F607F687F697F677F787F827F86
7F837F887F877F8C7F947F9E7F9D7F9A7FA37FAF7FB27FB97FAE7FB67FB88B71
7FC57FC67FCA7FD57FD47FE17FE67FE97FF37FF998DC80068004800B80128018
8019801C80218028803F803B804A804680528058805A805F8062806880738072
807080768079807D807F808480868085809B8093809A80AD519080AC80DB80E5
80D980DD80C480DA80D6810980EF80F1811B81298123812F814B000000000000
E4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
968B8146813E8153815180FC8171816E81658166817481838188818A81808182
81A0819581A481A3815F819381A981B081B581BE81B881BD81C081C281BA81C9
81CD81D181D981D881C881DA81DF81E081E781FA81FB81FE8201820282058207
820A820D821082168229822B82388233824082598258825D825A825F82640000
82628268826A826B822E827182778278827E828D829282AB829F82BB82AC82E1
82E382DF82D282F482F382FA8393830382FB82F982DE830682DC830982D98335
83348316833283318340833983508345832F832B831783188385839A83AA839F
83A283968323838E8387838A837C83B58373837583A0838983A883F4841383EB
83CE83FD840383D8840B83C183F7840783E083F2840D8422842083BD84388506
83FB846D842A843C855A84848477846B84AD846E848284698446842C846F8479
843584CA846284B984BF849F84D984CD84BB84DA84D084C184C684D684A18521
84FF84F485178518852C851F8515851484FC8540856385588548000000000000
E5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
85418602854B8555858085A485888591858A85A8856D8594859B85EA8587859C
8577857E859085C985BA85CF85B985D085D585DD85E585DC85F9860A8613860B
85FE85FA86068622861A8630863F864D4E558654865F86678671869386A386A9
86AA868B868C86B686AF86C486C686B086C9882386AB86D486DE86E986EC0000
86DF86DB86EF8712870687088700870386FB87118709870D86F9870A8734873F
8737873B87258729871A8760875F8778874C874E877487578768876E87598753
8763876A880587A2879F878287AF87CB87BD87C087D096D687AB87C487B387C7
87C687BB87EF87F287E0880F880D87FE87F687F7880E87D28811881688158822
88218831883688398827883B8844884288528859885E8862886B8881887E889E
8875887D88B5887288828897889288AE889988A2888D88A488B088BF88B188C3
88C488D488D888D988DD88F9890288FC88F488E888F28904890C890A89138943
891E8925892A892B89418944893B89368938894C891D8960895E000000000000
E6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
89668964896D896A896F89748977897E89838988898A8993899889A189A989A6
89AC89AF89B289BA89BD89BF89C089DA89DC89DD89E789F489F88A038A168A10
8A0C8A1B8A1D8A258A368A418A5B8A528A468A488A7C8A6D8A6C8A628A858A82
8A848AA88AA18A918AA58AA68A9A8AA38AC48ACD8AC28ADA8AEB8AF38AE70000
8AE48AF18B148AE08AE28AF78ADE8ADB8B0C8B078B1A8AE18B168B108B178B20
8B3397AB8B268B2B8B3E8B288B418B4C8B4F8B4E8B498B568B5B8B5A8B6B8B5F
8B6C8B6F8B748B7D8B808B8C8B8E8B928B938B968B998B9A8C3A8C418C3F8C48
8C4C8C4E8C508C558C628C6C8C788C7A8C828C898C858C8A8C8D8C8E8C948C7C
8C98621D8CAD8CAA8CBD8CB28CB38CAE8CB68CC88CC18CE48CE38CDA8CFD8CFA
8CFB8D048D058D0A8D078D0F8D0D8D109F4E8D138CCD8D148D168D678D6D8D71
8D738D818D998DC28DBE8DBA8DCF8DDA8DD68DCC8DDB8DCB8DEA8DEB8DDF8DE3
8DFC8E088E098DFF8E1D8E1E8E108E1F8E428E358E308E348E4A000000000000
E7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8E478E498E4C8E508E488E598E648E608E2A8E638E558E768E728E7C8E818E87
8E858E848E8B8E8A8E938E918E948E998EAA8EA18EAC8EB08EC68EB18EBE8EC5
8EC88ECB8EDB8EE38EFC8EFB8EEB8EFE8F0A8F058F158F128F198F138F1C8F1F
8F1B8F0C8F268F338F3B8F398F458F428F3E8F4C8F498F468F4E8F578F5C0000
8F628F638F648F9C8F9F8FA38FAD8FAF8FB78FDA8FE58FE28FEA8FEF90878FF4
90058FF98FFA901190159021900D901E9016900B90279036903590398FF8904F
905090519052900E9049903E90569058905E9068906F907696A890729082907D
90819080908A9089908F90A890AF90B190B590E290E4624890DB910291129119
91329130914A9156915891639165916991739172918B9189918291A291AB91AF
91AA91B591B491BA91C091C191C991CB91D091D691DF91E191DB91FC91F591F6
921E91FF9214922C92159211925E925792459249926492489295923F924B9250
929C92969293929B925A92CF92B992B792E9930F92FA9344932E000000000000
E8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
93199322931A9323933A9335933B935C9360937C936E935693B093AC93AD9394
93B993D693D793E893E593D893C393DD93D093C893E4941A9414941394039407
94109436942B94359421943A944194529444945B94609462945E946A92299470
94759477947D945A947C947E9481947F95829587958A95949596959895990000
95A095A895A795AD95BC95BB95B995BE95CA6FF695C395CD95CC95D595D495D6
95DC95E195E595E296219628962E962F9642964C964F964B9677965C965E965D
965F96669672966C968D96989695969796AA96A796B196B296B096B496B696B8
96B996CE96CB96C996CD894D96DC970D96D596F99704970697089713970E9711
970F971697199724972A97309739973D973E97449746974897429749975C9760
97649766976852D2976B977197799785977C9781977A9786978B978F9790979C
97A897A697A397B397B497C397C697C897CB97DC97ED9F4F97F27ADF97F697F5
980F980C9838982498219837983D9846984F984B986B986F9870000000000000
E9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
98719874987398AA98AF98B198B698C498C398C698E998EB9903990999129914
99189921991D991E99249920992C992E993D993E9942994999459950994B9951
9952994C99559997999899A599AD99AE99BC99DF99DB99DD99D899D199ED99EE
99F199F299FB99F89A019A0F9A0599E29A199A2B9A379A459A429A409A430000
9A3E9A559A4D9A5B9A579A5F9A629A659A649A699A6B9A6A9AAD9AB09ABC9AC0
9ACF9AD19AD39AD49ADE9ADF9AE29AE39AE69AEF9AEB9AEE9AF49AF19AF79AFB
9B069B189B1A9B1F9B229B239B259B279B289B299B2A9B2E9B2F9B329B449B43
9B4F9B4D9B4E9B519B589B749B939B839B919B969B979B9F9BA09BA89BB49BC0
9BCA9BB99BC69BCF9BD19BD29BE39BE29BE49BD49BE19C3A9BF29BF19BF09C15
9C149C099C139C0C9C069C089C129C0A9C049C2E9C1B9C259C249C219C309C47
9C329C469C3E9C5A9C609C679C769C789CE79CEC9CF09D099D089CEB9D039D06
9D2A9D269DAF9D239D1F9D449D159D129D419D3F9D3E9D469D48000000000000
EA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9D5D9D5E9D649D519D509D599D729D899D879DAB9D6F9D7A9D9A9DA49DA99DB2
9DC49DC19DBB9DB89DBA9DC69DCF9DC29DD99DD39DF89DE69DED9DEF9DFD9E1A
9E1B9E1E9E759E799E7D9E819E889E8B9E8C9E929E959E919E9D9EA59EA99EB8
9EAA9EAD97619ECC9ECE9ECF9ED09ED49EDC9EDE9EDD9EE09EE59EE89EEF0000
9EF49EF69EF79EF99EFB9EFC9EFD9F079F0876B79F159F219F2C9F3E9F4A9F52
9F549F639F5F9F609F619F669F679F6C9F6A9F779F729F769F959F9C9FA0582F
69C79059746451DC719900000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
EB
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000F8B5F8B60000000000000000000000000000000000000000000000000000
F8B7FE33000000000000000000000000000000000000F8B8FE31F8B900000000
F8BAF8BBF8BCF8BDFE300000000000000000FE35FE36FE39FE3AF8BEF8BFFE37
FE38FE3FFE40FE3DFE3EFE41FE42FE43FE44FE3BFE3C00000000000000000000
0000F8C000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
EC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000F8C1
0000F8C20000F8C30000F8C40000F8C500000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000F8C600000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000F8C70000F8C80000F8C9000000000000000000000000F8CA000000000000
0000000000000000000000000000000000000000000000000000000000000000
ED
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
F8CB0000F8CC0000F8CD0000F8CE0000F8CF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000F8D00000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000F8D10000F8D20000F8D3000000000000000000000000F8D40000
00000000000000000000F8D5F8D6000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

20
src/runtime/tcl_library/encoding/macRoman.enc

@ -1,20 +0,0 @@
# Encoding file: macRoman, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
20132014201C201D2018201900F725CA00FF0178204420AC2039203AFB01FB02
202100B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9013102C602DC00AF02D802D902DA00B802DD02DB02C7

20
src/runtime/tcl_library/encoding/macRomania.enc

@ -1,20 +0,0 @@
# Encoding file: macRomania, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE00A9212200B400A822600102015E
221E00B12264226500A500B522022211220F03C0222B00AA00BA21260103015F
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
20132014201C201D2018201900F725CA00FF0178204400A42039203A01620163
202100B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9013102C602DC00AF02D802D902DA00B802DD02DB02C7

20
src/runtime/tcl_library/encoding/macThai.enc

@ -1,20 +0,0 @@
# Encoding file: macThai, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00AB00BB2026F88CF88FF892F895F898F88BF88EF891F894F897201C201DF899
FFFD2022F884F889F885F886F887F888F88AF88DF890F893F89620182019FFFD
00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
0E300E310E320E330E340E350E360E370E380E390E3AFEFF200B201320140E3F
0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D21220E4F
0E500E510E520E530E540E550E560E570E580E5900AE00A9FFFDFFFDFFFDFFFD

20
src/runtime/tcl_library/encoding/macTurkish.enc

@ -1,20 +0,0 @@
# Encoding file: macTurkish, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
00C400C500C700C900D100D600DC00E100E000E200E400E300E500E700E900E8
00EA00EB00ED00EC00EE00EF00F100F300F200F400F600F500FA00F900FB00FC
202000B000A200A300A7202200B600DF00AE00A9212200B400A8226000C600D8
221E00B12264226500A500B522022211220F03C0222B00AA00BA03A900E600F8
00BF00A100AC221A01922248220600AB00BB202600A000C000C300D501520153
20132014201C201D2018201900F725CA00FF0178011E011F01300131015E015F
202100B7201A201E203000C200CA00C100CB00C800CD00CE00CF00CC00D300D4
F8FF00D200DA00DB00D9F8A002C602DC00AF02D802D902DA00B802DD02DB02C7

20
src/runtime/tcl_library/encoding/macUkraine.enc

@ -1,20 +0,0 @@
# Encoding file: macUkraine, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0410041104120413041404150416041704180419041A041B041C041D041E041F
0420042104220423042404250426042704280429042A042B042C042D042E042F
202000B0049000A300A7202200B6040600AE00A9212204020452226004030453
221E00B122642265045600B504910408040404540407045704090459040A045A
0458040500AC221A01922248220600AB00BB202600A0040B045B040C045C0455
20132014201C201D2018201900F7201E040E045E040F045F211604010451044F
0430043104320433043404350436043704380439043A043B043C043D043E043F
0440044104420443044404450446044704480449044A044B044C044D044E00A4

690
src/runtime/tcl_library/encoding/shiftjis.enc

@ -1,690 +0,0 @@
# Encoding file: shiftjis, multi-byte
M
003F 0 40
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
81
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8FF3E
FFE3FF3F30FD30FE309D309E30034EDD30053006300730FC20152010FF0FFF3C
301C2016FF5C2026202520182019201C201DFF08FF0930143015FF3BFF3DFF5B
FF5D30083009300A300B300C300D300E300F30103011FF0B221200B100D70000
00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
FF0400A200A3FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C725C6
25A125A025B325B225BD25BC203B301221922190219121933013000000000000
000000000000000000000000000000002208220B2286228722822283222A2229
000000000000000000000000000000002227222800AC21D221D4220022030000
0000000000000000000000000000000000000000222022A52312220222072261
2252226A226B221A223D221D2235222B222C0000000000000000000000000000
212B2030266F266D266A2020202100B6000000000000000025EF000000000000
82
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000FF10
FF11FF12FF13FF14FF15FF16FF17FF18FF190000000000000000000000000000
FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30
FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3A000000000000000000000000
0000FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000003041
30423043304430453046304730483049304A304B304C304D304E304F30503051
30523053305430553056305730583059305A305B305C305D305E305F30603061
30623063306430653066306730683069306A306B306C306D306E306F30703071
30723073307430753076307730783079307A307B307C307D307E307F30803081
30823083308430853086308730883089308A308B308C308D308E308F30903091
3092309300000000000000000000000000000000000000000000000000000000
83
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
30A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF30B0
30B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF30C0
30C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF30D0
30D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF0000
30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
30F030F130F230F330F430F530F6000000000000000000000000000000000391
03920393039403950396039703980399039A039B039C039D039E039F03A003A1
03A303A403A503A603A703A803A90000000000000000000000000000000003B1
03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1
03C303C403C503C603C703C803C9000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
04100411041204130414041504010416041704180419041A041B041C041D041E
041F0420042104220423042404250426042704280429042A042B042C042D042E
042F000000000000000000000000000000000000000000000000000000000000
04300431043204330434043504510436043704380439043A043B043C043D0000
043E043F0440044104420443044404450446044704480449044A044B044C044D
044E044F00000000000000000000000000000000000000000000000000002500
2502250C251025182514251C252C25242534253C25012503250F2513251B2517
25232533252B253B254B2520252F25282537253F251D25302525253825420000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
88
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000004E9C
55165A03963F54C0611B632859F690228475831C7A5060AA63E16E2565ED8466
82A69BF56893572765A162715B9B59D0867B98F47D627DBE9B8E62167C9F88B7
5B895EB563096697684895C7978D674F4EE54F0A4F4D4F9D504956F2593759D4
5A015C0960DF610F61706613690570BA754F757079FB7DAD7DEF80C3840E8863
8B029055907A533B4E954EA557DF80B290C178EF4E0058F16EA290387A328328
828B9C2F5141537054BD54E156E059FB5F1598F26DEB80E4852D000000000000
89
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9662967096A097FB540B53F35B8770CF7FBD8FC296E8536F9D5C7ABA4E117893
81FC6E26561855046B1D851A9C3B59E553A96D6674DC958F56424E91904B96F2
834F990C53E155B65B305F71662066F368046C386CF36D29745B76C87A4E9834
82F1885B8A6092ED6DB275AB76CA99C560A68B018D8A95B2698E53AD51860000
5712583059445BB45EF6602863A963F46CBF6F14708E7114715971D5733F7E01
827682D185979060925B9D1B586965BC6C5A752551F9592E59655F805FDC62BC
65FA6A2A6B276BB4738B7FC189569D2C9D0E9EC45CA16C96837B51045C4B61B6
81C6687672614E594FFA537860696E297A4F97F34E0B53164EEE4F554F3D4FA1
4F7352A053EF5609590F5AC15BB65BE179D16687679C67B66B4C6CB3706B73C2
798D79BE7A3C7B8782B182DB8304837783EF83D387668AB256298CA88FE6904E
971E868A4FC45CE862117259753B81E582BD86FE8CC096C5991399D54ECB4F1A
89E356DE584A58CA5EFB5FEB602A6094606261D0621262D06539000000000000
8A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9B41666668B06D777070754C76867D7582A587F9958B968E8C9D51F152BE5916
54B35BB35D16616869826DAF788D84CB88578A7293A79AB86D6C99A886D957A3
67FF86CE920E5283568754045ED362E164B9683C68386BBB737278BA7A6B899A
89D28D6B8F0390ED95A3969497695B665CB3697D984D984E639B7B206A2B0000
6A7F68B69C0D6F5F5272559D607062EC6D3B6E076ED1845B89108F444E149C39
53F6691B6A3A9784682A515C7AC384B291DC938C565B9D286822830584317CA5
520882C574E64E7E4F8351A05BD2520A52D852E75DFB559A582A59E65B8C5B98
5BDB5E725E7960A3611F616361BE63DB656267D1685368FA6B3E6B536C576F22
6F976F4574B0751876E3770B7AFF7BA17C217DE97F367FF0809D8266839E89B3
8ACC8CAB908494519593959195A2966597D3992882184E38542B5CB85DCC73A9
764C773C5CA97FEB8D0B96C19811985498584F014F0E5371559C566857FA5947
5B095BC45C905E0C5E7E5FCC63EE673A65D765E2671F68CB68C4000000000000
8B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A5F5E306BC56C176C7D757F79485B637A007D005FBD898F8A188CB48D778ECC
8F1D98E29A0E9B3C4E80507D510059935B9C622F628064EC6B3A72A075917947
7FA987FB8ABC8B7063AC83CA97A05409540355AB68546A588A70782767759ECD
53745BA2811A865090064E184E454EC74F1153CA54385BAE5F13602565510000
673D6C426C726CE3707874037A767AAE7B087D1A7CFE7D6665E7725B53BB5C45
5DE862D262E063196E20865A8A318DDD92F86F0179A69B5A4EA84EAB4EAC4F9B
4FA050D151477AF6517151F653545321537F53EB55AC58835CE15F375F4A602F
6050606D631F65596A4B6CC172C272ED77EF80F881058208854E90F793E197FF
99579A5A4EF051DD5C2D6681696D5C4066F26975738968507C8150C552E45747
5DFE932665A46B236B3D7434798179BD7B4B7DCA82B983CC887F895F8B398FD1
91D1541F92804E5D503653E5533A72D7739677E982E68EAF99C699C899D25177
611A865E55B07A7A50765BD3904796854E326ADB91E75C515C48000000000000
8C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
63987A9F6C9397748F617AAA718A96887C8268177E706851936C52F2541B85AB
8A137FA48ECD90E15366888879414FC250BE521151445553572D73EA578B5951
5F625F8460756176616761A963B2643A656C666F68426E1375667A3D7CFB7D4C
7D997E4B7F6B830E834A86CD8A088A638B668EFD981A9D8F82B88FCE9BE80000
5287621F64836FC09699684150916B206C7A6F547A747D5088408A2367084EF6
503950265065517C5238526355A7570F58055ACC5EFA61B261F862F36372691C
6A29727D72AC732E7814786F7D79770C80A9898B8B198CE28ED290639375967A
98559A139E785143539F53B35E7B5F266E1B6E90738473FE7D4382378A008AFA
96504E4E500B53E4547C56FA59D15B645DF15EAB5F276238654567AF6E5672D0
7CCA88B480A180E183F0864E8A878DE8923796C798679F134E944E924F0D5348
5449543E5A2F5F8C5FA1609F68A76A8E745A78818A9E8AA48B7791904E5E9BC9
4EA44F7C4FAF501950165149516C529F52B952FE539A53E35411000000000000
8D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
540E5589575157A2597D5B545B5D5B8F5DE55DE75DF75E785E835E9A5EB75F18
6052614C629762D863A7653B6602664366F4676D6821689769CB6C5F6D2A6D69
6E2F6E9D75327687786C7A3F7CE07D057D187D5E7DB18015800380AF80B18154
818F822A8352884C88618B1B8CA28CFC90CA91759271783F92FC95A4964D0000
980599999AD89D3B525B52AB53F7540858D562F76FE08C6A8F5F9EB9514B523B
544A56FD7A4091779D609ED273446F09817075115FFD60DA9AA872DB8FBC6B64
98034ECA56F0576458BE5A5A606861C7660F6606683968B16DF775D57D3A826E
9B424E9B4F5053C955065D6F5DE65DEE67FB6C99747378028A50939688DF5750
5EA7632B50B550AC518D670054C9585E59BB5BB05F69624D63A1683D6B736E08
707D91C7728078157826796D658E7D3083DC88C18F09969B5264572867507F6A
8CA151B45742962A583A698A80B454B25D0E57FC78959DFA4F5C524A548B643E
6628671467F57A847B567D22932F685C9BAD7B395319518A5237000000000000
8E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5BDF62F664AE64E6672D6BBA85A996D176909BD6634C93069BAB76BF66524E09
509853C25C7160E864926563685F71E673CA75237B977E8286958B838CDB9178
991065AC66AB6B8B4ED54ED44F3A4F7F523A53F853F255E356DB58EB59CB59C9
59FF5B505C4D5E025E2B5FD7601D6307652F5B5C65AF65BD65E8679D6B620000
6B7B6C0F7345794979C17CF87D197D2B80A2810281F389968A5E8A698A668A8C
8AEE8CC78CDC96CC98FC6B6F4E8B4F3C4F8D51505B575BFA6148630166426B21
6ECB6CBB723E74BD75D478C1793A800C803381EA84948F9E6C509E7F5F0F8B58
9D2B7AFA8EF85B8D96EB4E0353F157F759315AC95BA460896E7F6F0675BE8CEA
5B9F85007BE0507267F4829D5C61854A7E1E820E51995C0463688D66659C716E
793E7D1780058B1D8ECA906E86C790AA501F52FA5C3A6753707C7235914C91C8
932B82E55BC25F3160F94E3B53D65B88624B67316B8A72E973E07A2E816B8DA3
91529996511253D7546A5BFF63886A397DAC970056DA53CE5468000000000000
8F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5B975C315DDE4FEE610162FE6D3279C079CB7D427E4D7FD281ED821F84908846
89728B908E748F2F9031914B916C96C6919C4EC04F4F514553415F93620E67D4
6C416E0B73637E2691CD928353D459195BBF6DD1795D7E2E7C9B587E719F51FA
88538FF04FCA5CFB662577AC7AE3821C99FF51C65FAA65EC696F6B896DF30000
6E966F6476FE7D145DE190759187980651E6521D6240669166D96E1A5EB67DD2
7F7266F885AF85F78AF852A953D959735E8F5F90605592E4966450B7511F52DD
5320534753EC54E8554655315617596859BE5A3C5BB55C065C0F5C115C1A5E84
5E8A5EE05F70627F628462DB638C63776607660C662D6676677E68A26A1F6A35
6CBC6D886E096E58713C7126716775C77701785D7901796579F07AE07B117CA7
7D39809683D6848B8549885D88F38A1F8A3C8A548A738C618CDE91A49266937E
9418969C97984E0A4E084E1E4E575197527057CE583458CC5B225E3860C564FE
676167566D4472B675737A6384B88B7291B89320563157F498FE000000000000
90
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
62ED690D6B9671ED7E548077827289E698DF87558FB15C3B4F384FE14FB55507
5A205BDD5BE95FC3614E632F65B0664B68EE699B6D786DF1753375B9771F795E
79E67D3381E382AF85AA89AA8A3A8EAB8F9B903291DD97074EBA4EC152035875
58EC5C0B751A5C3D814E8A0A8FC59663976D7B258ACF9808916256F353A80000
9017543957825E2563A86C34708A77617C8B7FE088709042915493109318968F
745E9AC45D075D69657067A28DA896DB636E6749691983C5981796C088FE6F84
647A5BF84E16702C755D662F51C4523652E259D35F8160276210653F6574661F
667468F268166B636E057272751F76DB7CBE805658F088FD897F8AA08A938ACB
901D91929752975965897A0E810696BB5E2D60DC621A65A56614679077F37A4D
7C4D7E3E810A8CAC8D648DE18E5F78A9520762D963A5644262988A2D7A837BC0
8AAC96EA7D76820C87494ED95148534353605BA35C025C165DDD6226624764B0
681368346CC96D456D1767D36F5C714E717D65CB7A7F7BAD7DDA000000000000
91
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7E4A7FA8817A821B823985A68A6E8CCE8DF59078907792AD929195839BAE524D
55846F387136516879857E5581B37CCE564C58515CA863AA66FE66FD695A72D9
758F758E790E795679DF7C977D207D4486078A34963B90619F2050E7527553CC
53E2500955AA58EE594F723D5B8B5C64531D60E360F3635C6383633F63BB0000
64CD65E966F95DE369CD69FD6F1571E54E8975E976F87A937CDF7DCF7D9C8061
83498358846C84BC85FB88C58D709001906D9397971C9A1250CF5897618E81D3
85358D0890204FC3507452475373606F6349675F6E2C8DB3901F4FD75C5E8CCA
65CF7D9A53528896517663C35B585B6B5C0A640D6751905C4ED6591A592A6C70
8A51553E581559A560F0625367C182356955964099C49A284F5358065BFE8010
5CB15E2F5F856020614B623466FF6CF06EDE80CE817F82D4888B8CB89000902E
968A9EDB9BDB4EE353F059277B2C918D984C9DF96EDD7027535355445B856258
629E62D36CA26FEF74228A1794386FC18AFE833851E786F853EA000000000000
92
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
53E94F4690548FB0596A81315DFD7AEA8FBF68DA8C3772F89C486A3D8AB04E39
53585606576662C563A265E66B4E6DE16E5B70AD77ED7AEF7BAA7DBB803D80C6
86CB8A95935B56E358C75F3E65AD66966A806BB575378AC7502477E557305F1B
6065667A6C6075F47A1A7F6E81F48718904599B37BC9755C7AF97B5184C40000
901079E97A9283365AE177404E2D4EF25B995FE062BD663C67F16CE8866B8877
8A3B914E92F399D06A177026732A82E784578CAF4E01514651CB558B5BF55E16
5E335E815F145F355F6B5FB461F2631166A2671D6F6E7252753A773A80748139
817887768ABF8ADC8D858DF3929A957798029CE552C5635776F467156C8873CD
8CC393AE96736D25589C690E69CC8FFD939A75DB901A585A680263B469FB4F43
6F2C67D88FBB85267DB49354693F6F70576A58F75B2C7D2C722A540A91E39DB4
4EAD4F4E505C507552438C9E544858245B9A5E1D5E955EAD5EF75F1F608C62B5
633A63D068AF6C407887798E7A0B7DE082478A028AE68E449013000000000000
93
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
90B8912D91D89F0E6CE5645864E265756EF476847B1B906993D16EBA54F25FB9
64A48F4D8FED92445178586B59295C555E976DFB7E8F751C8CBC8EE2985B70B9
4F1D6BBF6FB1753096FB514E54105835585759AC5C605F926597675C6E21767B
83DF8CED901490FD934D7825783A52AA5EA6571F597460125012515A51AC0000
51CD520055105854585859575B955CF65D8B60BC6295642D6771684368BC68DF
76D76DD86E6F6D9B706F71C85F5375D879777B497B547B527CD67D7152308463
856985E48A0E8B048C468E0F9003900F94199676982D9A3095D850CD52D5540C
58025C0E61A7649E6D1E77B37AE580F48404905392855CE09D07533F5F975FB3
6D9C7279776379BF7BE46BD272EC8AAD68036A6151F87A8169345C4A9CF682EB
5BC59149701E56785C6F60C765666C8C8C5A90419813545166C7920D594890A3
51854E4D51EA85998B0E7058637A934B696299B47E047577535769608EDF96E3
6C5D4E8C5C3C5F108FE953028CD1808986795EFF65E54E735165000000000000
94
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59825C3F97EE4EFB598A5FCD8A8D6FE179B079625BE78471732B71B15E745FF5
637B649A71C37C984E435EFC4E4B57DC56A260A96FC37D0D80FD813381BF8FB2
899786A45DF4628A64AD898767776CE26D3E743678345A467F7582AD99AC4FF3
5EC362DD63926557676F76C3724C80CC80BA8F29914D500D57F95A9268850000
6973716472FD8CB758F28CE0966A9019877F79E477E784294F2F5265535A62CD
67CF6CCA767D7B947C95823685848FEB66DD6F2072067E1B83AB99C19EA651FD
7BB178727BB880877B486AE85E61808C75517560516B92626E8C767A91979AEA
4F107F70629C7B4F95A59CE9567A585986E496BC4F345224534A53CD53DB5E06
642C6591677F6C3E6C4E724872AF73ED75547E41822C85E98CA97BC491C67169
981298EF633D6669756A76E478D0854386EE532A5351542659835E875F7C60B2
6249627962AB65906BD46CCC75B276AE789179D87DCB7F7780A588AB8AB98CBB
907F975E98DB6A0B7C3850995C3E5FAE67876BD8743577097F8E000000000000
95
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9F3B67CA7A175339758B9AED5F66819D83F180985F3C5FC575627B46903C6867
59EB5A9B7D10767E8B2C4FF55F6A6A196C376F0274E2796888688A558C795EDF
63CF75C579D282D7932892F2849C86ED9C2D54C15F6C658C6D5C70158CA78CD3
983B654F74F64E0D4ED857E0592B5A665BCC51A85E035E9C6016627665770000
65A7666E6D6E72367B268150819A82998B5C8CA08CE68D74961C96444FAE64AB
6B66821E8461856A90E85C01695398A8847A85574F0F526F5FA95E45670D798F
8179890789866DF55F1762556CB84ECF72699B925206543B567458B361A4626E
711A596E7C897CDE7D1B96F06587805E4E194F75517558405E635E735F0A67C4
4E26853D9589965B7C73980150FB58C1765678A7522577A585117B86504F5909
72477BC77DE88FBA8FD4904D4FBF52C95A295F0197AD4FDD821792EA57036355
6B69752B88DC8F147A4252DF58936155620A66AE6BCD7C3F83E950234FF85305
5446583159495B9D5CF05CEF5D295E9662B16367653E65B9670B000000000000
96
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6CD56CE170F978327E2B80DE82B3840C84EC870289128A2A8C4A90A692D298FD
9CF39D6C4E4F4EA1508D5256574A59A85E3D5FD85FD9623F66B4671B67D068D2
51927D2180AA81A88B008C8C8CBF927E96325420982C531750D5535C58A864B2
6734726777667A4691E652C36CA16B8658005E4C5954672C7FFB51E176C60000
646978E89B549EBB57CB59B96627679A6BCE54E969D95E55819C67959BAA67FE
9C52685D4EA64FE353C862B9672B6CAB8FC44FAD7E6D9EBF4E0761626E806F2B
85135473672A9B455DF37B955CAC5BC6871C6E4A84D17A14810859997C8D6C11
772052D959227121725F77DB97279D61690B5A7F5A1851A5540D547D660E76DF
8FF792989CF459EA725D6EC5514D68C97DBF7DEC97629EBA64786A2183025984
5B5F6BDB731B76F27DB280178499513267289ED976EE676252FF99055C24623B
7C7E8CB0554F60B67D0B958053014E5F51B6591C723A803691CE5F2577E25384
5F797D0485AC8A338E8D975667F385AE9453610961086CB9765200000000FF5E
97
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8AED8F38552F4F51512A52C753CB5BA55E7D60A0618263D6670967DA6E676D8C
733673377531795088D58A98904A909190F596C4878D59154E884F594E0E8A89
8F3F981050AD5E7C59965BB95EB863DA63FA64C166DC694A69D86D0B6EB67194
75287AAF7F8A8000844984C989818B218E0A9065967D990A617E62916B320000
6C836D747FCC7FFC6DC07F8587BA88F8676583B1983C96F76D1B7D61843D916A
4E7153755D506B046FEB85CD862D89A75229540F5C65674E68A87406748375E2
88CF88E191CC96E296785F8B73877ACB844E63A0756552896D416E9C74097559
786B7C9296867ADC9F8D4FB6616E65C5865C4E864EAE50DA4E2151CC5BEE6599
68816DBC731F764277AD7A1C7CE7826F8AD2907C91CF96759818529B7DD1502B
539867976DCB71D0743381E88F2A96A39C579E9F746058416D997D2F985E4EE4
4F364F8B51B752B15DBA601C73B2793C82D3923496B796F6970A9E979F6266A6
6B74521752A370C888C25EC9604B61906F2371497C3E7DF4806F000000000000
98
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
84EE9023932C54429B6F6AD370898CC28DEF973252B45A415ECA5F046717697C
69946D6A6F0F726272FC7BED8001807E874B90CE516D9E937984808B93328AD6
502D548C8A716B6A8CC4810760D167A09DF24E994E989C108A6B85C185686900
6E7E789781550000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000005F0C
4E104E154E2A4E314E364E3C4E3F4E424E564E584E824E858C6B4E8A82125F0D
4E8E4E9E4E9F4EA04EA24EB04EB34EB64ECE4ECD4EC44EC64EC24ED74EDE4EED
4EDF4EF74F094F5A4F304F5B4F5D4F574F474F764F884F8F4F984F7B4F694F70
4F914F6F4F864F9651184FD44FDF4FCE4FD84FDB4FD14FDA4FD04FE44FE5501A
50285014502A502550054F1C4FF650215029502C4FFE4FEF5011500650435047
6703505550505048505A5056506C50785080509A508550B450B2000000000000
99
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
50C950CA50B350C250D650DE50E550ED50E350EE50F950F55109510151025116
51155114511A5121513A5137513C513B513F51405152514C515451627AF85169
516A516E5180518256D8518C5189518F519151935195519651A451A651A251A9
51AA51AB51B351B151B251B051B551BD51C551C951DB51E0865551E951ED0000
51F051F551FE5204520B5214520E5227522A522E52335239524F5244524B524C
525E5254526A527452695273527F527D528D529452925271528852918FA88FA7
52AC52AD52BC52B552C152CD52D752DE52E352E698ED52E052F352F552F852F9
530653087538530D5310530F5315531A5323532F533153335338534053465345
4E175349534D51D6535E5369536E5918537B53775382539653A053A653A553AE
53B053B653C37C1296D953DF66FC71EE53EE53E853ED53FA5401543D5440542C
542D543C542E54365429541D544E548F5475548E545F5471547754705492547B
5480547654845490548654C754A254B854A554AC54C454C854A8000000000000
9A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
54AB54C254A454BE54BC54D854E554E6550F551454FD54EE54ED54FA54E25539
55405563554C552E555C55455556555755385533555D5599558054AF558A559F
557B557E5598559E55AE557C558355A9558755A855DA55C555DF55C455DC55E4
55D4561455F7561655FE55FD561B55F9564E565071DF56345636563256380000
566B5664562F566C566A56865680568A56A05694568F56A556AE56B656B456C2
56BC56C156C356C056C856CE56D156D356D756EE56F9570056FF570457095708
570B570D57135718571655C7571C572657375738574E573B5740574F576957C0
57885761577F5789579357A057B357A457AA57B057C357C657D457D257D3580A
57D657E3580B5819581D587258215862584B58706BC05852583D5879588558B9
589F58AB58BA58DE58BB58B858AE58C558D358D158D758D958D858E558DC58E4
58DF58EF58FA58F958FB58FC58FD5902590A5910591B68A65925592C592D5932
5938593E7AD259555950594E595A5958596259605967596C5969000000000000
9B
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
59785981599D4F5E4FAB59A359B259C659E859DC598D59D959DA5A255A1F5A11
5A1C5A095A1A5A405A6C5A495A355A365A625A6A5A9A5ABC5ABE5ACB5AC25ABD
5AE35AD75AE65AE95AD65AFA5AFB5B0C5B0B5B165B325AD05B2A5B365B3E5B43
5B455B405B515B555B5A5B5B5B655B695B705B735B755B7865885B7A5B800000
5B835BA65BB85BC35BC75BC95BD45BD05BE45BE65BE25BDE5BE55BEB5BF05BF6
5BF35C055C075C085C0D5C135C205C225C285C385C395C415C465C4E5C535C50
5C4F5B715C6C5C6E4E625C765C795C8C5C915C94599B5CAB5CBB5CB65CBC5CB7
5CC55CBE5CC75CD95CE95CFD5CFA5CED5D8C5CEA5D0B5D155D175D5C5D1F5D1B
5D115D145D225D1A5D195D185D4C5D525D4E5D4B5D6C5D735D765D875D845D82
5DA25D9D5DAC5DAE5DBD5D905DB75DBC5DC95DCD5DD35DD25DD65DDB5DEB5DF2
5DF55E0B5E1A5E195E115E1B5E365E375E445E435E405E4E5E575E545E5F5E62
5E645E475E755E765E7A9EBC5E7F5EA05EC15EC25EC85ED05ECF000000000000
9C
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
5ED65EE35EDD5EDA5EDB5EE25EE15EE85EE95EEC5EF15EF35EF05EF45EF85EFE
5F035F095F5D5F5C5F0B5F115F165F295F2D5F385F415F485F4C5F4E5F2F5F51
5F565F575F595F615F6D5F735F775F835F825F7F5F8A5F885F915F875F9E5F99
5F985FA05FA85FAD5FBC5FD65FFB5FE45FF85FF15FDD60B35FFF602160600000
601960106029600E6031601B6015602B6026600F603A605A6041606A6077605F
604A6046604D6063604360646042606C606B60596081608D60E76083609A6084
609B60966097609260A7608B60E160B860E060D360B45FF060BD60C660B560D8
614D6115610660F660F7610060F460FA6103612160FB60F1610D610E6147613E
61286127614A613F613C612C6134613D614261446173617761586159615A616B
6174616F61656171615F615D6153617561996196618761AC6194619A618A6191
61AB61AE61CC61CA61C961F761C861C361C661BA61CB7F7961CD61E661E361F6
61FA61F461FF61FD61FC61FE620062086209620D620C6214621B000000000000
9D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
621E6221622A622E6230623262336241624E625E6263625B62606268627C6282
6289627E62926293629662D46283629462D762D162BB62CF62FF62C664D462C8
62DC62CC62CA62C262C7629B62C9630C62EE62F163276302630862EF62F56350
633E634D641C634F6396638E638063AB637663A3638F6389639F63B5636B0000
636963BE63E963C063C663E363C963D263F663C4641664346406641364266436
651D64176428640F6467646F6476644E652A6495649364A564A9648864BC64DA
64D264C564C764BB64D864C264F164E7820964E064E162AC64E364EF652C64F6
64F464F264FA650064FD6518651C650565246523652B65346535653765366538
754B654865566555654D6558655E655D65726578658265838B8A659B659F65AB
65B765C365C665C165C465CC65D265DB65D965E065E165F16772660A660365FB
6773663566366634661C664F664466496641665E665D666466676668665F6662
667066836688668E668966846698669D66C166B966C966BE66BC000000000000
9E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
66C466B866D666DA66E0663F66E666E966F066F566F7670F6716671E67266727
9738672E673F67366741673867376746675E67606759676367646789677067A9
677C676A678C678B67A667A1678567B767EF67B467EC67B367E967B867E467DE
67DD67E267EE67B967CE67C667E76A9C681E684668296840684D6832684E0000
68B3682B685968636877687F689F688F68AD6894689D689B68836AAE68B96874
68B568A068BA690F688D687E690168CA690868D86922692668E1690C68CD68D4
68E768D569366912690468D768E3692568F968E068EF6928692A691A69236921
68C669796977695C6978696B6954697E696E69396974693D695969306961695E
695D6981696A69B269AE69D069BF69C169D369BE69CE5BE869CA69DD69BB69C3
69A76A2E699169A0699C699569B469DE69E86A026A1B69FF6B0A69F969F269E7
6A0569B16A1E69ED6A1469EB6A0A6A126AC16A236A136A446A0C6A726A366A78
6A476A626A596A666A486A386A226A906A8D6AA06A846AA26AA3000000000000
9F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6A9786176ABB6AC36AC26AB86AB36AAC6ADE6AD16ADF6AAA6ADA6AEA6AFB6B05
86166AFA6B126B169B316B1F6B386B3776DC6B3998EE6B476B436B496B506B59
6B546B5B6B5F6B616B786B796B7F6B806B846B836B8D6B986B956B9E6BA46BAA
6BAB6BAF6BB26BB16BB36BB76BBC6BC66BCB6BD36BDF6BEC6BEB6BF36BEF0000
9EBE6C086C136C146C1B6C246C236C5E6C556C626C6A6C826C8D6C9A6C816C9B
6C7E6C686C736C926C906CC46CF16CD36CBD6CD76CC56CDD6CAE6CB16CBE6CBA
6CDB6CEF6CD96CEA6D1F884D6D366D2B6D3D6D386D196D356D336D126D0C6D63
6D936D646D5A6D796D596D8E6D956FE46D856DF96E156E0A6DB56DC76DE66DB8
6DC66DEC6DDE6DCC6DE86DD26DC56DFA6DD96DE46DD56DEA6DEE6E2D6E6E6E2E
6E196E726E5F6E3E6E236E6B6E2B6E766E4D6E1F6E436E3A6E4E6E246EFF6E1D
6E386E826EAA6E986EC96EB76ED36EBD6EAF6EC46EB26ED46ED56E8F6EA56EC2
6E9F6F416F11704C6EEC6EF86EFE6F3F6EF26F316EEF6F326ECC000000000000
E0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
6F3E6F136EF76F866F7A6F786F816F806F6F6F5B6FF36F6D6F826F7C6F586F8E
6F916FC26F666FB36FA36FA16FA46FB96FC66FAA6FDF6FD56FEC6FD46FD86FF1
6FEE6FDB7009700B6FFA70117001700F6FFE701B701A6F74701D7018701F7030
703E7032705170637099709270AF70F170AC70B870B370AE70DF70CB70DD0000
70D9710970FD711C711971657155718871667162714C7156716C718F71FB7184
719571A871AC71D771B971BE71D271C971D471CE71E071EC71E771F571FC71F9
71FF720D7210721B7228722D722C72307232723B723C723F72407246724B7258
7274727E7282728172877292729672A272A772B972B272C372C672C472CE72D2
72E272E072E172F972F7500F7317730A731C7316731D7334732F73297325733E
734E734F9ED87357736A7368737073787375737B737A73C873B373CE73BB73C0
73E573EE73DE74A27405746F742573F87432743A7455743F745F74597441745C
746974707463746A7476747E748B749E74A774CA74CF74D473F1000000000000
E1
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
74E074E374E774E974EE74F274F074F174F874F7750475037505750C750E750D
75157513751E7526752C753C7544754D754A7549755B7546755A756975647567
756B756D75787576758675877574758A758975827594759A759D75A575A375C2
75B375C375B575BD75B875BC75B175CD75CA75D275D975E375DE75FE75FF0000
75FC760175F075FA75F275F3760B760D7609761F762776207621762276247634
7630763B764776487646765C76587661766276687669766A7667766C76707672
76767678767C768076837688768B768E769676937699769A76B076B476B876B9
76BA76C276CD76D676D276DE76E176E576E776EA862F76FB7708770777047729
7724771E77257726771B773777387747775A7768776B775B7765777F777E7779
778E778B779177A0779E77B077B677B977BF77BC77BD77BB77C777CD77D777DA
77DC77E377EE77FC780C781279267820792A7845788E78747886787C789A788C
78A378B578AA78AF78D178C678CB78D478BE78BC78C578CA78EC000000000000
E2
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
78E778DA78FD78F47907791279117919792C792B794079607957795F795A7955
7953797A797F798A799D79A79F4B79AA79AE79B379B979BA79C979D579E779EC
79E179E37A087A0D7A187A197A207A1F79807A317A3B7A3E7A377A437A577A49
7A617A627A699F9D7A707A797A7D7A887A977A957A987A967AA97AC87AB00000
7AB67AC57AC47ABF90837AC77ACA7ACD7ACF7AD57AD37AD97ADA7ADD7AE17AE2
7AE67AED7AF07B027B0F7B0A7B067B337B187B197B1E7B357B287B367B507B7A
7B047B4D7B0B7B4C7B457B757B657B747B677B707B717B6C7B6E7B9D7B987B9F
7B8D7B9C7B9A7B8B7B927B8F7B5D7B997BCB7BC17BCC7BCF7BB47BC67BDD7BE9
7C117C147BE67BE57C607C007C077C137BF37BF77C177C0D7BF67C237C277C2A
7C1F7C377C2B7C3D7C4C7C437C547C4F7C407C507C587C5F7C647C567C657C6C
7C757C837C907CA47CAD7CA27CAB7CA17CA87CB37CB27CB17CAE7CB97CBD7CC0
7CC57CC27CD87CD27CDC7CE29B3B7CEF7CF27CF47CF67CFA7D06000000000000
E3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
7D027D1C7D157D0A7D457D4B7D2E7D327D3F7D357D467D737D567D4E7D727D68
7D6E7D4F7D637D937D897D5B7D8F7D7D7D9B7DBA7DAE7DA37DB57DC77DBD7DAB
7E3D7DA27DAF7DDC7DB87D9F7DB07DD87DDD7DE47DDE7DFB7DF27DE17E057E0A
7E237E217E127E317E1F7E097E0B7E227E467E667E3B7E357E397E437E370000
7E327E3A7E677E5D7E567E5E7E597E5A7E797E6A7E697E7C7E7B7E837DD57E7D
8FAE7E7F7E887E897E8C7E927E907E937E947E967E8E7E9B7E9C7F387F3A7F45
7F4C7F4D7F4E7F507F517F557F547F587F5F7F607F687F697F677F787F827F86
7F837F887F877F8C7F947F9E7F9D7F9A7FA37FAF7FB27FB97FAE7FB67FB88B71
7FC57FC67FCA7FD57FD47FE17FE67FE97FF37FF998DC80068004800B80128018
8019801C80218028803F803B804A804680528058805A805F8062806880738072
807080768079807D807F808480868085809B8093809A80AD519080AC80DB80E5
80D980DD80C480DA80D6810980EF80F1811B81298123812F814B000000000000
E4
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
968B8146813E8153815180FC8171816E81658166817481838188818A81808182
81A0819581A481A3815F819381A981B081B581BE81B881BD81C081C281BA81C9
81CD81D181D981D881C881DA81DF81E081E781FA81FB81FE8201820282058207
820A820D821082168229822B82388233824082598258825D825A825F82640000
82628268826A826B822E827182778278827E828D829282AB829F82BB82AC82E1
82E382DF82D282F482F382FA8393830382FB82F982DE830682DC830982D98335
83348316833283318340833983508345832F832B831783188385839A83AA839F
83A283968323838E8387838A837C83B58373837583A0838983A883F4841383EB
83CE83FD840383D8840B83C183F7840783E083F2840D8422842083BD84388506
83FB846D842A843C855A84848477846B84AD846E848284698446842C846F8479
843584CA846284B984BF849F84D984CD84BB84DA84D084C184C684D684A18521
84FF84F485178518852C851F8515851484FC8540856385588548000000000000
E5
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
85418602854B8555858085A485888591858A85A8856D8594859B85EA8587859C
8577857E859085C985BA85CF85B985D085D585DD85E585DC85F9860A8613860B
85FE85FA86068622861A8630863F864D4E558654865F86678671869386A386A9
86AA868B868C86B686AF86C486C686B086C9882386AB86D486DE86E986EC0000
86DF86DB86EF8712870687088700870386FB87118709870D86F9870A8734873F
8737873B87258729871A8760875F8778874C874E877487578768876E87598753
8763876A880587A2879F878287AF87CB87BD87C087D096D687AB87C487B387C7
87C687BB87EF87F287E0880F880D87FE87F687F7880E87D28811881688158822
88218831883688398827883B8844884288528859885E8862886B8881887E889E
8875887D88B5887288828897889288AE889988A2888D88A488B088BF88B188C3
88C488D488D888D988DD88F9890288FC88F488E888F28904890C890A89138943
891E8925892A892B89418944893B89368938894C891D8960895E000000000000
E6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
89668964896D896A896F89748977897E89838988898A8993899889A189A989A6
89AC89AF89B289BA89BD89BF89C089DA89DC89DD89E789F489F88A038A168A10
8A0C8A1B8A1D8A258A368A418A5B8A528A468A488A7C8A6D8A6C8A628A858A82
8A848AA88AA18A918AA58AA68A9A8AA38AC48ACD8AC28ADA8AEB8AF38AE70000
8AE48AF18B148AE08AE28AF78ADE8ADB8B0C8B078B1A8AE18B168B108B178B20
8B3397AB8B268B2B8B3E8B288B418B4C8B4F8B4E8B498B568B5B8B5A8B6B8B5F
8B6C8B6F8B748B7D8B808B8C8B8E8B928B938B968B998B9A8C3A8C418C3F8C48
8C4C8C4E8C508C558C628C6C8C788C7A8C828C898C858C8A8C8D8C8E8C948C7C
8C98621D8CAD8CAA8CBD8CB28CB38CAE8CB68CC88CC18CE48CE38CDA8CFD8CFA
8CFB8D048D058D0A8D078D0F8D0D8D109F4E8D138CCD8D148D168D678D6D8D71
8D738D818D998DC28DBE8DBA8DCF8DDA8DD68DCC8DDB8DCB8DEA8DEB8DDF8DE3
8DFC8E088E098DFF8E1D8E1E8E108E1F8E428E358E308E348E4A000000000000
E7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
8E478E498E4C8E508E488E598E648E608E2A8E638E558E768E728E7C8E818E87
8E858E848E8B8E8A8E938E918E948E998EAA8EA18EAC8EB08EC68EB18EBE8EC5
8EC88ECB8EDB8EE38EFC8EFB8EEB8EFE8F0A8F058F158F128F198F138F1C8F1F
8F1B8F0C8F268F338F3B8F398F458F428F3E8F4C8F498F468F4E8F578F5C0000
8F628F638F648F9C8F9F8FA38FAD8FAF8FB78FDA8FE58FE28FEA8FEF90878FF4
90058FF98FFA901190159021900D901E9016900B90279036903590398FF8904F
905090519052900E9049903E90569058905E9068906F907696A890729082907D
90819080908A9089908F90A890AF90B190B590E290E4624890DB910291129119
91329130914A9156915891639165916991739172918B9189918291A291AB91AF
91AA91B591B491BA91C091C191C991CB91D091D691DF91E191DB91FC91F591F6
921E91FF9214922C92159211925E925792459249926492489295923F924B9250
929C92969293929B925A92CF92B992B792E9930F92FA9344932E000000000000
E8
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
93199322931A9323933A9335933B935C9360937C936E935693B093AC93AD9394
93B993D693D793E893E593D893C393DD93D093C893E4941A9414941394039407
94109436942B94359421943A944194529444945B94609462945E946A92299470
94759477947D945A947C947E9481947F95829587958A95949596959895990000
95A095A895A795AD95BC95BB95B995BE95CA6FF695C395CD95CC95D595D495D6
95DC95E195E595E296219628962E962F9642964C964F964B9677965C965E965D
965F96669672966C968D96989695969796AA96A796B196B296B096B496B696B8
96B996CE96CB96C996CD894D96DC970D96D596F99704970697089713970E9711
970F971697199724972A97309739973D973E97449746974897429749975C9760
97649766976852D2976B977197799785977C9781977A9786978B978F9790979C
97A897A697A397B397B497C397C697C897CB97DC97ED9F4F97F27ADF97F697F5
980F980C9838982498219837983D9846984F984B986B986F9870000000000000
E9
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
98719874987398AA98AF98B198B698C498C398C698E998EB9903990999129914
99189921991D991E99249920992C992E993D993E9942994999459950994B9951
9952994C99559997999899A599AD99AE99BC99DF99DB99DD99D899D199ED99EE
99F199F299FB99F89A019A0F9A0599E29A199A2B9A379A459A429A409A430000
9A3E9A559A4D9A5B9A579A5F9A629A659A649A699A6B9A6A9AAD9AB09ABC9AC0
9ACF9AD19AD39AD49ADE9ADF9AE29AE39AE69AEF9AEB9AEE9AF49AF19AF79AFB
9B069B189B1A9B1F9B229B239B259B279B289B299B2A9B2E9B2F9B329B449B43
9B4F9B4D9B4E9B519B589B749B939B839B919B969B979B9F9BA09BA89BB49BC0
9BCA9BB99BC69BCF9BD19BD29BE39BE29BE49BD49BE19C3A9BF29BF19BF09C15
9C149C099C139C0C9C069C089C129C0A9C049C2E9C1B9C259C249C219C309C47
9C329C469C3E9C5A9C609C679C769C789CE79CEC9CF09D099D089CEB9D039D06
9D2A9D269DAF9D239D1F9D449D159D129D419D3F9D3E9D469D48000000000000
EA
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
9D5D9D5E9D649D519D509D599D729D899D879DAB9D6F9D7A9D9A9DA49DA99DB2
9DC49DC19DBB9DB89DBA9DC69DCF9DC29DD99DD39DF89DE69DED9DEF9DFD9E1A
9E1B9E1E9E759E799E7D9E819E889E8B9E8C9E929E959E919E9D9EA59EA99EB8
9EAA9EAD97619ECC9ECE9ECF9ED09ED49EDC9EDE9EDD9EE09EE59EE89EEF0000
9EF49EF69EF79EF99EFB9EFC9EFD9F079F0876B79F159F219F2C9F3E9F4A9F52
9F549F639F5F9F609F619F669F679F6C9F6A9F779F729F769F959F9C9FA0582F
69C79059746451DC719900000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
R
8160 301C FF5E
8161 2016 2225
817C 2212 FF0D
8191 00A2 FFE0
8192 00A3 FFE1
81CA 00AC FFE2

20
src/runtime/tcl_library/encoding/symbol.enc

@ -1,20 +0,0 @@
# Encoding file: symbol, single-byte
S
003F 1 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002122000023220300250026220D002800292217002B002C2212002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
22450391039203A70394039503A603930397039903D1039A039B039C039D039F
03A0039803A103A303A403A503C203A9039E03A80396005B2234005D22A5005F
F8E503B103B203C703B403B503C603B303B703B903D503BA03BB03BC03BD03BF
03C003B803C103C303C403C503D603C903BE03C803B6007B007C007D223C007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000003D2203222642044221E0192266326662665266021942190219121922193
00B000B12033226500D7221D2202202200F72260226122482026F8E6F8E721B5
21352111211C21182297229522052229222A2283228722842282228622082209
2220220700AE00A92122220F221A22C500AC2227222821D421D021D121D221D3
22C42329F8E8F8E9F8EA2211F8EBF8ECF8EDF8EEF8EFF8F0F8F1F8F2F8F3F8F4
F8FF232A222B2320F8F52321F8F6F8F7F8F8F8F9F8FAF8FBF8FCF8FDF8FE0000

20
src/runtime/tcl_library/encoding/tis-620.enc

@ -1,20 +0,0 @@
# Encoding file: tis-620, single-byte
S
003F 0 1
00
0000000100020003000400050006000700080009000A000B000C000D000E000F
0010001100120013001400150016001700180019001A001B001C001D001E001F
0020002100220023002400250026002700280029002A002B002C002D002E002F
0030003100320033003400350036003700380039003A003B003C003D003E003F
0040004100420043004400450046004700480049004A004B004C004D004E004F
0050005100520053005400550056005700580059005A005B005C005D005E005F
0060006100620063006400650066006700680069006A006B006C006D006E006F
0070007100720073007400750076007700780079007A007B007C007D007E007F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000

25
src/runtime/tcl_library/foreachline.tcl

@ -1,25 +0,0 @@
# foreachLine:
# Iterate over the contents of a file, a line at a time.
# The body script is run for each, with variable varName set to the line
# contents.
#
# Copyright © 2023 Donal K Fellows.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
proc foreachLine {varName filename body} {
upvar 1 $varName line
set f [open $filename "r"]
try {
while {[gets $f line] >= 0} {
uplevel 1 $body
}
} on return {msg opt} {
dict incr opt -level
return -options $opt $msg
} finally {
close $f
}
}

335
src/runtime/tcl_library/history.tcl

@ -1,335 +0,0 @@
# history.tcl --
#
# Implementation of the history command.
#
# Copyright © 1997 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# The tcl::history array holds the history list and some additional
# bookkeeping variables.
#
# nextid the index used for the next history list item.
# keep the max size of the history list
# oldest the index of the oldest item in the history.
namespace eval ::tcl {
variable history
if {![info exists history]} {
array set history {
nextid 0
keep 20
oldest -20
}
}
namespace ensemble create -command ::tcl::history -map {
add ::tcl::HistAdd
change ::tcl::HistChange
clear ::tcl::HistClear
event ::tcl::HistEvent
info ::tcl::HistInfo
keep ::tcl::HistKeep
nextid ::tcl::HistNextID
redo ::tcl::HistRedo
}
}
# history --
#
# This is the main history command. See the man page for its interface.
# This does some argument checking and calls the helper ensemble in the
# tcl namespace.
proc ::history {args} {
# If no command given, we're doing 'history info'. Can't be done with an
# ensemble unknown handler, as those don't fire when no subcommand is
# given at all.
if {![llength $args]} {
set args info
}
# Tricky stuff needed to make stack and errors come out right!
tailcall apply {arglist {tailcall history {*}$arglist} ::tcl} $args
}
# (unnamed) --
#
# Callback when [::history] is destroyed. Destroys the implementation.
#
# Parameters:
# oldName what the command was called.
# newName what the command is now called (an empty string).
# op the operation (= delete).
#
# Results:
# none
#
# Side Effects:
# The implementation of the [::history] command ceases to exist.
trace add command ::history delete [list apply {{oldName newName op} {
variable history
unset -nocomplain history
foreach c [info procs ::tcl::Hist*] {
rename $c {}
}
rename ::tcl::history {}
} ::tcl}]
# tcl::HistAdd --
#
# Add an item to the history, and optionally eval it at the global scope
#
# Parameters:
# event the command to add
# exec (optional) a substring of "exec" causes the command to
# be evaled.
# Results:
# If executing, then the results of the command are returned
#
# Side Effects:
# Adds to the history list
proc ::tcl::HistAdd {event {exec {}}} {
variable history
if {
[prefix longest {exec {}} $exec] eq ""
&& [llength [info level 0]] == 3
} then {
return -code error "bad argument \"$exec\": should be \"exec\""
}
# Do not add empty commands to the history
if {[string trim $event] eq ""} {
return ""
}
# Maintain the history
set history([incr history(nextid)]) $event
unset -nocomplain history([incr history(oldest)])
# Only execute if 'exec' (or non-empty prefix of it) given
if {$exec eq ""} {
return ""
}
tailcall eval $event
}
# tcl::HistKeep --
#
# Set or query the limit on the length of the history list
#
# Parameters:
# limit (optional) the length of the history list
#
# Results:
# If no limit is specified, the current limit is returned
#
# Side Effects:
# Updates history(keep) if a limit is specified
proc ::tcl::HistKeep {{count {}}} {
variable history
if {[llength [info level 0]] == 1} {
return $history(keep)
}
if {![string is integer -strict $count] || ($count < 0)} {
return -code error "illegal keep count \"$count\""
}
set oldold $history(oldest)
set history(oldest) [expr {$history(nextid) - $count}]
for {} {$oldold <= $history(oldest)} {incr oldold} {
unset -nocomplain history($oldold)
}
set history(keep) $count
}
# tcl::HistClear --
#
# Erase the history list
#
# Parameters:
# none
#
# Results:
# none
#
# Side Effects:
# Resets the history array, except for the keep limit
proc ::tcl::HistClear {} {
variable history
set keep $history(keep)
unset history
array set history [list \
nextid 0 \
keep $keep \
oldest -$keep \
]
}
# tcl::HistInfo --
#
# Return a pretty-printed version of the history list
#
# Parameters:
# num (optional) the length of the history list to return
#
# Results:
# A formatted history list
proc ::tcl::HistInfo {{count {}}} {
variable history
if {[llength [info level 0]] == 1} {
set count [expr {$history(keep) + 1}]
} elseif {![string is integer -strict $count]} {
return -code error "bad integer \"$count\""
}
set result {}
set newline ""
for {set i [expr {$history(nextid) - $count + 1}]} \
{$i <= $history(nextid)} {incr i} {
if {![info exists history($i)]} {
continue
}
set cmd [string map [list \n \n\t] [string trimright $history($i) \ \n]]
append result $newline[format "%6d %s" $i $cmd]
set newline \n
}
return $result
}
# tcl::HistRedo --
#
# Fetch the previous or specified event, execute it, and then replace
# the current history item with that event.
#
# Parameters:
# event (optional) index of history item to redo. Defaults to -1,
# which means the previous event.
#
# Results:
# Those of the command being redone.
#
# Side Effects:
# Replaces the current history list item with the one being redone.
proc ::tcl::HistRedo {{event -1}} {
variable history
set i [HistIndex $event]
if {$i == $history(nextid)} {
return -code error "cannot redo the current event"
}
set cmd $history($i)
HistChange $cmd 0
tailcall eval $cmd
}
# tcl::HistIndex --
#
# Map from an event specifier to an index in the history list.
#
# Parameters:
# event index of history item to redo.
# If this is a positive number, it is used directly.
# If it is a negative number, then it counts back to a previous
# event, where -1 is the most recent event.
# A string can be matched, either by being the prefix of a
# command or by matching a command with string match.
#
# Results:
# The index into history, or an error if the index didn't match.
proc ::tcl::HistIndex {event} {
variable history
if {![string is integer -strict $event]} {
for {set i [expr {$history(nextid)-1}]} {[info exists history($i)]} \
{incr i -1} {
if {[string match $event* $history($i)]} {
return $i
}
if {[string match $event $history($i)]} {
return $i
}
}
return -code error "no event matches \"$event\""
} elseif {$event <= 0} {
set i [expr {$history(nextid) + $event}]
} else {
set i $event
}
if {$i <= $history(oldest)} {
return -code error "event \"$event\" is too far in the past"
}
if {$i > $history(nextid)} {
return -code error "event \"$event\" hasn't occurred yet"
}
return $i
}
# tcl::HistEvent --
#
# Map from an event specifier to the value in the history list.
#
# Parameters:
# event index of history item to redo. See index for a description of
# possible event patterns.
#
# Results:
# The value from the history list.
proc ::tcl::HistEvent {{event -1}} {
variable history
set i [HistIndex $event]
if {![info exists history($i)]} {
return ""
}
return [string trimright $history($i) \ \n]
}
# tcl::HistChange --
#
# Replace a value in the history list.
#
# Parameters:
# newValue The new value to put into the history list.
# event (optional) index of history item to redo. See index for a
# description of possible event patterns. This defaults to 0,
# which specifies the current event.
#
# Side Effects:
# Changes the history list.
proc ::tcl::HistChange {newValue {event 0}} {
variable history
set i [HistIndex $event]
set history($i) $newValue
}
# tcl::HistNextID --
#
# Returns the number of the next history event.
#
# Parameters:
# None.
#
# Side Effects:
# None.
proc ::tcl::HistNextID {} {
variable history
return [expr {$history(nextid) + 1}]
}
return
# Local Variables:
# mode: tcl
# fill-column: 78
# End:

5515
src/runtime/tcl_library/http/http.tcl

File diff suppressed because it is too large Load Diff

2
src/runtime/tcl_library/http/pkgIndex.tcl

@ -1,2 +0,0 @@
if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
package ifneeded http 2.10b1 [list tclPkgSetup $dir http 2.10b1 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}]

780
src/runtime/tcl_library/init.tcl

@ -1,780 +0,0 @@
# init.tcl --
#
# Default system startup file for Tcl-based applications. Defines
# "unknown" procedure and auto-load facilities.
#
# Copyright © 1991-1993 The Regents of the University of California.
# Copyright © 1994-1996 Sun Microsystems, Inc.
# Copyright © 1998-1999 Scriptics Corporation.
# Copyright © 2004 Kevin B. Kenny.
# Copyright © 2018 Sean Woods
#
# All rights reserved.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# This test intentionally written in pre-7.5 Tcl
if {[info commands package] == ""} {
error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
package require -exact tcl 9.0b1
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
#
# The environment variable TCLLIBPATH
#
# tcl_library, which is the directory containing this init.tcl script.
# [tclInit] (Tcl_Init()) searches around for the directory containing this
# init.tcl and defines tcl_library to that location before sourcing it.
#
# The parent directory of tcl_library. Adding the parent
# means that packages in peer directories will be found automatically.
#
# Also add the directory ../lib relative to the directory where the
# executable is located. This is meant to find binary packages for the
# same architecture as the current executable.
#
# tcl_pkgPath, which is set by the platform-specific initialization routines
# On UNIX it is compiled in
# On Windows, it is not used
#
# (Ticket 41c9857bdd) In a safe interpreter, this file does not set
# ::auto_path (other than to {} if it is undefined). The caller, typically
# a Safe Base command, is responsible for setting ::auto_path.
if {![info exists auto_path]} {
if {[info exists env(TCLLIBPATH)] && (![interp issafe])} {
set auto_path [apply {{} {
lmap path $::env(TCLLIBPATH) {
# Paths relative to unresolvable home dirs are ignored
if {[catch {file tildeexpand $path} expanded_path]} {
continue
}
set expanded_path
}
}}]
} else {
set auto_path ""
}
}
namespace eval tcl {
if {![interp issafe]} {
variable Dir
foreach Dir [list $::tcl_library [file dirname $::tcl_library]] {
if {$Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
}
set Dir [file join [file dirname [file dirname \
[info nameofexecutable]]] lib]
if {$Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
if {[info exists ::tcl_pkgPath]} { catch {
foreach Dir $::tcl_pkgPath {
if {$Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
}
}}
variable Path [encoding dirs]
set Dir [file join $::tcl_library encoding]
if {$Dir ni $Path} {
lappend Path $Dir
encoding dirs $Path
}
unset Dir Path
}
}
namespace eval tcl::Pkg {}
# Setup the unknown package handler
if {[interp issafe]} {
package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
} else {
# Set up search for Tcl Modules (TIP #189).
# and setup platform specific unknown package handlers
if {$tcl_platform(os) eq "Darwin"
&& $tcl_platform(platform) eq "unix"} {
package unknown {::tcl::tm::UnknownHandler \
{::tcl::MacOSXPkgUnknown ::tclPkgUnknown}}
} else {
package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
}
# Set up the 'clock' ensemble
namespace eval ::tcl::clock [list variable TclLibDir $::tcl_library]
proc ::tcl::initClock {} {
# Auto-loading stubs for 'clock.tcl'
foreach cmd {add format scan} {
proc ::tcl::clock::$cmd args {
variable TclLibDir
source [file join $TclLibDir clock.tcl]
return [uplevel 1 [info level 0]]
}
}
rename ::tcl::initClock {}
}
::tcl::initClock
}
# Conditionalize for presence of exec.
if {[namespace which -command exec] eq ""} {
# Some machines do not have exec. Also, on all
# platforms, safe interpreters do not have exec.
set auto_noexec 1
}
# Define a log command (which can be overwritten to log errors
# differently, specially when stderr is not available)
if {[namespace which -command tclLog] eq ""} {
proc tclLog {string} {
catch {puts stderr $string}
}
}
# unknown --
# This procedure is called when a Tcl command is invoked that doesn't
# exist in the interpreter. It takes the following steps to make the
# command available:
#
# 1. See if the autoload facility can locate the command in a
# Tcl script file. If so, load it and execute it.
# 2. If the command was invoked interactively at top-level:
# (a) see if the command exists as an executable UNIX program.
# If so, "exec" the command.
# (b) see if the command requests csh-like history substitution
# in one of the common forms !!, !<number>, or ^old^new. If
# so, emulate csh's history substitution.
# (c) see if the command is a unique abbreviation for another
# command. If so, invoke the command.
#
# Arguments:
# args - A list whose elements are the words of the original
# command, including the command name.
proc unknown args {
variable ::tcl::UnknownPending
global auto_noexec auto_noload env tcl_interactive errorInfo errorCode
if {[info exists errorInfo]} {
set savedErrorInfo $errorInfo
}
if {[info exists errorCode]} {
set savedErrorCode $errorCode
}
set name [lindex $args 0]
if {![info exists auto_noload]} {
#
# Make sure we're not trying to load the same proc twice.
#
if {[info exists UnknownPending($name)]} {
return -code error "self-referential recursion\
in \"unknown\" for command \"$name\""
}
set UnknownPending($name) pending
set ret [catch {
auto_load $name [uplevel 1 {::namespace current}]
} msg opts]
unset UnknownPending($name)
if {$ret != 0} {
dict append opts -errorinfo "\n (autoloading \"$name\")"
return -options $opts $msg
}
if {![array size UnknownPending]} {
unset UnknownPending
}
if {$msg} {
if {[info exists savedErrorCode]} {
set ::errorCode $savedErrorCode
} else {
unset -nocomplain ::errorCode
}
if {[info exists savedErrorInfo]} {
set errorInfo $savedErrorInfo
} else {
unset -nocomplain errorInfo
}
set code [catch {uplevel 1 $args} msg opts]
if {$code == 1} {
#
# Compute stack trace contribution from the [uplevel].
# Note the dependence on how Tcl_AddErrorInfo, etc.
# construct the stack trace.
#
set errInfo [dict get $opts -errorinfo]
set errCode [dict get $opts -errorcode]
set cinfo $args
if {[string length [encoding convertto utf-8 $cinfo]] > 150} {
set cinfo [string range $cinfo 0 150]
while {[string length [encoding convertto utf-8 $cinfo]] > 150} {
set cinfo [string range $cinfo 0 end-1]
}
append cinfo ...
}
set tail "\n (\"uplevel\" body line 1)\n invoked\
from within\n\"uplevel 1 \$args\""
set expect "$msg\n while executing\n\"$cinfo\"$tail"
if {$errInfo eq $expect} {
#
# The stack has only the eval from the expanded command
# Do not generate any stack trace here.
#
dict unset opts -errorinfo
dict incr opts -level
return -options $opts $msg
}
#
# Stack trace is nested, trim off just the contribution
# from the extra "eval" of $args due to the "catch" above.
#
set last [string last $tail $errInfo]
if {$last + [string length $tail] != [string length $errInfo]} {
# Very likely cannot happen
return -options $opts $msg
}
set errInfo [string range $errInfo 0 $last-1]
set tail "\"$cinfo\""
set last [string last $tail $errInfo]
if {$last < 0 || $last + [string length $tail] != [string length $errInfo]} {
return -code error -errorcode $errCode \
-errorinfo $errInfo $msg
}
set errInfo [string range $errInfo 0 $last-1]
set tail "\n invoked from within\n"
set last [string last $tail $errInfo]
if {$last + [string length $tail] == [string length $errInfo]} {
return -code error -errorcode $errCode \
-errorinfo [string range $errInfo 0 $last-1] $msg
}
set tail "\n while executing\n"
set last [string last $tail $errInfo]
if {$last + [string length $tail] == [string length $errInfo]} {
return -code error -errorcode $errCode \
-errorinfo [string range $errInfo 0 $last-1] $msg
}
return -options $opts $msg
} else {
dict incr opts -level
return -options $opts $msg
}
}
}
if {([info level] == 1) && ([info script] eq "")
&& [info exists tcl_interactive] && $tcl_interactive} {
if {![info exists auto_noexec]} {
set new [auto_execok $name]
if {$new ne ""} {
set redir ""
if {[namespace which -command console] eq ""} {
set redir ">&@stdout <@stdin"
}
uplevel 1 [list ::catch \
[concat exec $redir $new [lrange $args 1 end]] \
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
}
if {$name eq "!!"} {
set newcmd [history event]
} elseif {[regexp {^!(.+)$} $name -> event]} {
set newcmd [history event $event]
} elseif {[regexp {^\^([^^]*)\^([^^]*)\^?$} $name -> old new]} {
set newcmd [history event -1]
catch {regsub -all -- $old $newcmd $new newcmd}
}
if {[info exists newcmd]} {
tclLog $newcmd
history change $newcmd 0
uplevel 1 [list ::catch $newcmd \
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
set ret [catch {set candidates [info commands $name*]} msg]
if {$name eq "::"} {
set name ""
}
if {$ret != 0} {
dict append opts -errorinfo \
"\n (expanding command prefix \"$name\" in unknown)"
return -options $opts $msg
}
# Filter out bogus matches when $name contained
# a glob-special char [Bug 946952]
if {$name eq ""} {
# Handle empty $name separately due to strangeness
# in [string first] (See RFE 1243354)
set cmds $candidates
} else {
set cmds [list]
foreach x $candidates {
if {[string first $name $x] == 0} {
lappend cmds $x
}
}
}
if {[llength $cmds] == 1} {
uplevel 1 [list ::catch [lreplace $args 0 0 [lindex $cmds 0]] \
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
if {[llength $cmds]} {
return -code error "ambiguous command name \"$name\": [lsort $cmds]"
}
}
return -code error -errorcode [list TCL LOOKUP COMMAND $name] \
"invalid command name \"$name\""
}
# auto_load --
# Checks a collection of library directories to see if a procedure
# is defined in one of them. If so, it sources the appropriate
# library file to create the procedure. Returns 1 if it successfully
# loaded the procedure, 0 otherwise.
#
# Arguments:
# cmd - Name of the command to find and load.
# namespace (optional) The namespace where the command is being used - must be
# a canonical namespace as returned [namespace current]
# for instance. If not given, namespace current is used.
proc auto_load {cmd {namespace {}}} {
global auto_index auto_path
if {$namespace eq ""} {
set namespace [uplevel 1 [list ::namespace current]]
}
set nameList [auto_qualify $cmd $namespace]
# workaround non canonical auto_index entries that might be around
# from older auto_mkindex versions
lappend nameList $cmd
foreach name $nameList {
if {[info exists auto_index($name)]} {
namespace eval :: $auto_index($name)
# There's a couple of ways to look for a command of a given
# name. One is to use
# info commands $name
# Unfortunately, if the name has glob-magic chars in it like *
# or [], it may not match. For our purposes here, a better
# route is to use
# namespace which -command $name
if {[namespace which -command $name] ne ""} {
return 1
}
}
}
if {![info exists auto_path]} {
return 0
}
if {![auto_load_index]} {
return 0
}
foreach name $nameList {
if {[info exists auto_index($name)]} {
namespace eval :: $auto_index($name)
if {[namespace which -command $name] ne ""} {
return 1
}
}
}
return 0
}
# ::tcl::Pkg::source --
# This procedure provides an alternative "source" command, which doesn't
# register the file for the "package files" command. Safe interpreters
# don't have to do anything special.
#
# Arguments:
# filename
proc ::tcl::Pkg::source {filename} {
if {[interp issafe]} {
uplevel 1 [list ::source $filename]
} else {
uplevel 1 [list ::source -nopkg $filename]
}
}
# auto_load_index --
# Loads the contents of tclIndex files on the auto_path directory
# list. This is usually invoked within auto_load to load the index
# of available commands. Returns 1 if the index is loaded, and 0 if
# the index is already loaded and up to date.
#
# Arguments:
# None.
proc auto_load_index {} {
variable ::tcl::auto_oldpath
global auto_index auto_path
if {[info exists auto_oldpath] && ($auto_oldpath eq $auto_path)} {
return 0
}
set auto_oldpath $auto_path
# Check if we are a safe interpreter. In that case, we support only
# newer format tclIndex files.
set issafe [interp issafe]
for {set i [expr {[llength $auto_path] - 1}]} {$i >= 0} {incr i -1} {
set dir [lindex $auto_path $i]
set f ""
if {$issafe} {
catch {source [file join $dir tclIndex]}
} elseif {[catch {set f [open [file join $dir tclIndex]]}]} {
continue
} else {
set error [catch {
fconfigure $f -encoding utf-8 -eofchar \x1A
set id [gets $f]
if {$id eq "# Tcl autoload index file, version 2.0"} {
eval [read $f]
} elseif {$id eq "# Tcl autoload index file: each line identifies a Tcl"} {
while {[gets $f line] >= 0} {
if {([string index $line 0] eq "#") \
|| ([llength $line] != 2)} {
continue
}
set name [lindex $line 0]
set auto_index($name) \
"::tcl::Pkg::source [file join $dir [lindex $line 1]]"
}
} else {
error "[file join $dir tclIndex] isn't a proper Tcl index file"
}
} msg opts]
if {$f ne ""} {
close $f
}
if {$error} {
return -options $opts $msg
}
}
}
return 1
}
# auto_qualify --
#
# Compute a fully qualified names list for use in the auto_index array.
# For historical reasons, commands in the global namespace do not have leading
# :: in the index key. The list has two elements when the command name is
# relative (no leading ::) and the namespace is not the global one. Otherwise
# only one name is returned (and searched in the auto_index).
#
# Arguments -
# cmd The command name. Can be any name accepted for command
# invocations (Like "foo::::bar").
# namespace The namespace where the command is being used - must be
# a canonical namespace as returned by [namespace current]
# for instance.
proc auto_qualify {cmd namespace} {
# count separators and clean them up
# (making sure that foo:::::bar will be treated as foo::bar)
set n [regsub -all {::+} $cmd :: cmd]
# Ignore namespace if the name starts with ::
# Handle special case of only leading ::
# Before each return case we give an example of which category it is
# with the following form :
# (inputCmd, inputNameSpace) -> output
if {[string match ::* $cmd]} {
if {$n > 1} {
# (::foo::bar , *) -> ::foo::bar
return [list $cmd]
} else {
# (::global , *) -> global
return [list [string range $cmd 2 end]]
}
}
# Potentially returning 2 elements to try :
# (if the current namespace is not the global one)
if {$n == 0} {
if {$namespace eq "::"} {
# (nocolons , ::) -> nocolons
return [list $cmd]
} else {
# (nocolons , ::sub) -> ::sub::nocolons nocolons
return [list ${namespace}::$cmd $cmd]
}
} elseif {$namespace eq "::"} {
# (foo::bar , ::) -> ::foo::bar
return [list ::$cmd]
} else {
# (foo::bar , ::sub) -> ::sub::foo::bar ::foo::bar
return [list ${namespace}::$cmd ::$cmd]
}
}
# auto_import --
#
# Invoked during "namespace import" to make see if the imported commands
# reside in an autoloaded library. If so, the commands are loaded so
# that they will be available for the import links. If not, then this
# procedure does nothing.
#
# Arguments -
# pattern The pattern of commands being imported (like "foo::*")
# a canonical namespace as returned by [namespace current]
proc auto_import {pattern} {
global auto_index
# If no namespace is specified, this will be an error case
if {![string match *::* $pattern]} {
return
}
set ns [uplevel 1 [list ::namespace current]]
set patternList [auto_qualify $pattern $ns]
auto_load_index
foreach pattern $patternList {
foreach name [array names auto_index $pattern] {
if {([namespace which -command $name] eq "")
&& ([namespace qualifiers $pattern] eq [namespace qualifiers $name])} {
namespace eval :: $auto_index($name)
}
}
}
}
# auto_execok --
#
# Returns string that indicates name of program to execute if
# name corresponds to a shell builtin or an executable in the
# Windows search path, or "" otherwise. Builds an associative
# array auto_execs that caches information about previous checks,
# for speed.
#
# Arguments:
# name - Name of a command.
if {$tcl_platform(platform) eq "windows"} {
# Windows version.
#
# Note that file executable doesn't work under Windows, so we have to
# look for files with .exe, .com, or .bat extensions. Also, the path
# may be in the Path or PATH environment variables, and path
# components are separated with semicolons, not colons as under Unix.
#
proc auto_execok name {
global auto_execs env tcl_platform
if {[info exists auto_execs($name)]} {
return $auto_execs($name)
}
set auto_execs($name) ""
set shellBuiltins [list assoc cls copy date del dir echo erase exit ftype \
md mkdir mklink move rd ren rename rmdir start time type ver vol]
if {[info exists env(PATHEXT)]} {
# Add an initial ; to have the {} extension check first.
set execExtensions [split ";$env(PATHEXT)" ";"]
} else {
set execExtensions [list {} .com .exe .bat .cmd]
}
if {[string tolower $name] in $shellBuiltins} {
# When this is command.com for some reason on Win2K, Tcl won't
# exec it unless the case is right, which this corrects. COMSPEC
# may not point to a real file, so do the check.
set cmd $env(COMSPEC)
if {[file exists $cmd]} {
set cmd [file attributes $cmd -shortname]
}
return [set auto_execs($name) [list $cmd /c $name]]
}
if {[llength [file split $name]] != 1} {
foreach ext $execExtensions {
set file ${name}${ext}
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
}
}
return ""
}
set path "[file dirname [info nameof]];.;"
if {[info exists env(SystemRoot)]} {
set windir $env(SystemRoot)
} elseif {[info exists env(WINDIR)]} {
set windir $env(WINDIR)
}
if {[info exists windir]} {
append path "$windir/system32;$windir/system;$windir;"
}
foreach var {PATH Path path} {
if {[info exists env($var)]} {
append path ";$env($var)"
}
}
foreach ext $execExtensions {
unset -nocomplain checked
foreach dir [split $path {;}] {
# Skip already checked directories
if {[info exists checked($dir)] || ($dir eq "")} {
continue
}
set checked($dir) {}
set file [file join $dir ${name}${ext}]
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
}
}
}
return ""
}
} else {
# Unix version.
#
proc auto_execok name {
global auto_execs env
if {[info exists auto_execs($name)]} {
return $auto_execs($name)
}
set auto_execs($name) ""
if {[llength [file split $name]] != 1} {
if {[file executable $name] && ![file isdirectory $name]} {
set auto_execs($name) [list $name]
}
return $auto_execs($name)
}
foreach dir [split $env(PATH) :] {
if {$dir eq ""} {
set dir .
}
set file [file join $dir $name]
if {[file executable $file] && ![file isdirectory $file]} {
set auto_execs($name) [list $file]
return $auto_execs($name)
}
}
return ""
}
}
# ::tcl::CopyDirectory --
#
# This procedure is called by Tcl's core when attempts to call the
# filesystem's copydirectory function fail. The semantics of the call
# are that 'dest' does not yet exist, i.e. dest should become the exact
# image of src. If dest does exist, we throw an error.
#
# Note that making changes to this procedure can change the results
# of running Tcl's tests.
#
# Arguments:
# action - "renaming" or "copying"
# src - source directory
# dest - destination directory
proc tcl::CopyDirectory {action src dest} {
set nsrc [file normalize $src]
set ndest [file normalize $dest]
if {$action eq "renaming"} {
# Can't rename volumes. We could give a more precise
# error message here, but that would break the test suite.
if {$nsrc in [file volumes]} {
return -code error "error $action \"$src\" to\
\"$dest\": trying to rename a volume or move a directory\
into itself"
}
}
if {[file exists $dest]} {
if {$nsrc eq $ndest} {
return -code error "error $action \"$src\" to\
\"$dest\": trying to rename a volume or move a directory\
into itself"
}
if {$action eq "copying"} {
# We used to throw an error here, but, looking more closely
# at the core copy code in tclFCmd.c, if the destination
# exists, then we should only call this function if -force
# is true, which means we just want to over-write. So,
# the following code is now commented out.
#
# return -code error "error $action \"$src\" to\
# \"$dest\": file exists"
} else {
# Depending on the platform, and on the current
# working directory, the directories '.', '..'
# can be returned in various combinations. Anyway,
# if any other file is returned, we must signal an error.
set existing [glob -nocomplain -directory $dest * .*]
lappend existing {*}[glob -nocomplain -directory $dest \
-type hidden * .*]
foreach s $existing {
if {[file tail $s] ni {. ..}} {
return -code error "error $action \"$src\" to\
\"$dest\": file exists"
}
}
}
} else {
if {[string first $nsrc $ndest] >= 0} {
set srclen [expr {[llength [file split $nsrc]] - 1}]
set ndest [lindex [file split $ndest] $srclen]
if {$ndest eq [file tail $nsrc]} {
return -code error "error $action \"$src\" to\
\"$dest\": trying to rename a volume or move a directory\
into itself"
}
}
file mkdir $dest
}
# Have to be careful to capture both visible and hidden files.
# We will also be more generous to the file system and not
# assume the hidden and non-hidden lists are non-overlapping.
#
# On Unix 'hidden' files begin with '.'. On other platforms
# or filesystems hidden files may have other interpretations.
set filelist [concat [glob -nocomplain -directory $src *] \
[glob -nocomplain -directory $src -types hidden *]]
foreach s [lsort -unique $filelist] {
if {[file tail $s] ni {. ..}} {
file copy -force -- $s [file join $dest [file tail $s]]
}
}
return
}

247
src/runtime/tcl_library/install.tcl

@ -1,247 +0,0 @@
###
# Installer actions built into tclsh and invoked
# if the first command line argument is "install"
###
if {[llength $argv] < 2} {
exit 0
}
namespace eval ::practcl {}
###
# Installer tools
###
proc ::practcl::_isdirectory name {
return [file isdirectory $name]
}
###
# Return true if the pkgindex file contains
# any statement other than "package ifneeded"
# and/or if any package ifneeded loads a DLL
###
proc ::practcl::_pkgindex_directory {path} {
set buffer {}
set pkgidxfile [file join $path pkgIndex.tcl]
if {![file exists $pkgidxfile]} {
# No pkgIndex file, read the source
foreach file [glob -nocomplain $path/*.tm] {
set file [file normalize $file]
set fname [file rootname [file tail $file]]
###
# We used to be able to ... Assume the package is correct in the filename
# No hunt for a "package provides"
###
set package [lindex [split $fname -] 0]
set version [lindex [split $fname -] 1]
###
# Read the file, and override assumptions as needed
###
set fin [open $file r]
fconfigure $fin -encoding utf-8 -eofchar \x1A
set dat [read $fin]
close $fin
# Look for a teapot style Package statement
foreach line [split $dat \n] {
set line [string trim $line]
if { [string range $line 0 9] != "# Package " } continue
set package [lindex $line 2]
set version [lindex $line 3]
break
}
# Look for a package provide statement
foreach line [split $dat \n] {
set line [string trim $line]
if { [string range $line 0 14] != "package provide" } continue
set package [lindex $line 2]
set version [lindex $line 3]
break
}
append buffer "package ifneeded $package $version \[list source \[file join \$dir [file tail $file]\]\]" \n
}
foreach file [glob -nocomplain $path/*.tcl] {
if { [file tail $file] == "version_info.tcl" } continue
set fin [open $file r]
fconfigure $fin -encoding utf-8 -eofchar \x1A
set dat [read $fin]
close $fin
if {![regexp "package provide" $dat]} continue
set fname [file rootname [file tail $file]]
# Look for a package provide statement
foreach line [split $dat \n] {
set line [string trim $line]
if { [string range $line 0 14] != "package provide" } continue
set package [lindex $line 2]
set version [lindex $line 3]
if {[string index $package 0] in "\$ \[ @"} continue
if {[string index $version 0] in "\$ \[ @"} continue
append buffer "package ifneeded $package $version \[list source \[file join \$dir [file tail $file]\]\]" \n
break
}
}
return $buffer
}
set fin [open $pkgidxfile r]
fconfigure $fin -encoding utf-8 -eofchar \x1A
set dat [read $fin]
close $fin
set trace 0
#if {[file tail $path] eq "tool"} {
# set trace 1
#}
set thisline {}
foreach line [split $dat \n] {
append thisline $line \n
if {![info complete $thisline]} continue
set line [string trim $line]
if {[string length $line]==0} {
set thisline {} ; continue
}
if {[string index $line 0] eq "#"} {
set thisline {} ; continue
}
if {[regexp "if.*catch.*package.*Tcl.*return" $thisline]} {
if {$trace} {puts "[file dirname $pkgidxfile] Ignoring $thisline"}
set thisline {} ; continue
}
if {[regexp "if.*package.*vsatisfies.*package.*provide.*return" $thisline]} {
if {$trace} { puts "[file dirname $pkgidxfile] Ignoring $thisline" }
set thisline {} ; continue
}
if {![regexp "package.*ifneeded" $thisline]} {
# This package index contains arbitrary code
# source instead of trying to add it to the main
# package index
if {$trace} { puts "[file dirname $pkgidxfile] Arbitrary code $thisline" }
return {source [file join $dir pkgIndex.tcl]}
}
append buffer $thisline \n
set thisline {}
}
if {$trace} {puts [list [file dirname $pkgidxfile] $buffer]}
return $buffer
}
proc ::practcl::_pkgindex_path_subdir {path} {
set result {}
foreach subpath [glob -nocomplain [file join $path *]] {
if {[file isdirectory $subpath]} {
lappend result $subpath {*}[_pkgindex_path_subdir $subpath]
}
}
return $result
}
###
# Index all paths given as though they will end up in the same
# virtual file system
###
proc ::practcl::pkgindex_path args {
set stack {}
set buffer {
lappend ::PATHSTACK $dir
}
foreach base $args {
set base [file normalize $base]
set paths {}
foreach dir [glob -nocomplain [file join $base *]] {
if {[file tail $dir] eq "teapot"} continue
lappend paths $dir {*}[::practcl::_pkgindex_path_subdir $dir]
}
set i [string length $base]
# Build a list of all of the paths
if {[llength $paths]} {
foreach path $paths {
if {$path eq $base} continue
set path_indexed($path) 0
}
} else {
puts [list WARNING: NO PATHS FOUND IN $base]
}
set path_indexed($base) 1
set path_indexed([file join $base boot tcl]) 1
foreach teapath [glob -nocomplain [file join $base teapot *]] {
set pkg [file tail $teapath]
append buffer [list set pkg $pkg]
append buffer {
set pkginstall [file join $::g(HOME) teapot $pkg]
if {![file exists $pkginstall]} {
installDir [file join $dir teapot $pkg] $pkginstall
}
}
}
foreach path $paths {
if {$path_indexed($path)} continue
set thisdir [file_relative $base $path]
set idxbuf [::practcl::_pkgindex_directory $path]
if {[string length $idxbuf]} {
incr path_indexed($path)
append buffer "set dir \[set PKGDIR \[file join \[lindex \$::PATHSTACK end\] $thisdir\]\]" \n
append buffer [string map {$dir $PKGDIR} [string trimright $idxbuf]] \n
}
}
}
append buffer {
set dir [lindex $::PATHSTACK end]
set ::PATHSTACK [lrange $::PATHSTACK 0 end-1]
}
return $buffer
}
###
# topic: 64319f4600fb63c82b2258d908f9d066
# description: Script to build the VFS file system
###
proc ::practcl::installDir {d1 d2} {
puts [format {%*sCreating %s} [expr {4 * [info level]}] {} [file tail $d2]]
file delete -force -- $d2
file mkdir $d2
foreach ftail [glob -directory $d1 -nocomplain -tails *] {
set f [file join $d1 $ftail]
if {[file isdirectory $f] && [string compare CVS $ftail]} {
installDir $f [file join $d2 $ftail]
} elseif {[file isfile $f]} {
file copy -force $f [file join $d2 $ftail]
if {$::tcl_platform(platform) eq {unix}} {
file attributes [file join $d2 $ftail] -permissions 0o644
} else {
file attributes [file join $d2 $ftail] -readonly 1
}
}
}
if {$::tcl_platform(platform) eq {unix}} {
file attributes $d2 -permissions 0o755
} else {
file attributes $d2 -readonly 1
}
}
proc ::practcl::copyDir {d1 d2 {toplevel 1}} {
#if {$toplevel} {
# puts [list ::practcl::copyDir $d1 -> $d2]
#}
#file delete -force -- $d2
file mkdir $d2
foreach ftail [glob -directory $d1 -nocomplain -tails *] {
set f [file join $d1 $ftail]
if {[file isdirectory $f] && [string compare CVS $ftail]} {
copyDir $f [file join $d2 $ftail] 0
} elseif {[file isfile $f]} {
file copy -force $f [file join $d2 $ftail]
}
}
}
switch [lindex $argv 1] {
mkzip {
zipfs mkzip {*}[lrange $argv 2 end]
}
mkzip {
zipfs mkimg {*}[lrange $argv 2 end]
}
default {
::practcl::[lindex $argv 1] {*}[lrange $argv 2 end]
}
}
exit 0

40
src/runtime/tcl_library/license.terms

@ -1,40 +0,0 @@
This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState
Corporation and other parties. The following terms apply to all files
associated with the software unless explicitly disclaimed in
individual files.
The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.
IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.
GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7014 (b) (3) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.

19
src/runtime/tcl_library/manifest.txt

@ -1,19 +0,0 @@
###
# Package manifest for all Tcl packages included in the /library file system
###
apply {{dir} {
set isafe [interp issafe]
foreach {safe package version file} {
0 http 2.10b1 {http http.tcl}
1 msgcat 1.7.1 {msgcat msgcat.tcl}
1 opt 0.4.8 {opt optparse.tcl}
0 cookiejar 0.2.0 {cookiejar cookiejar.tcl}
0 tcl::idna 1.0.1 {cookiejar idna.tcl}
0 platform 1.0.19 {platform platform.tcl}
0 platform::shell 1.1.4 {platform shell.tcl}
1 tcltest 2.5.6 {tcltest tcltest.tcl}
} {
if {$isafe && !$safe} continue
package ifneeded $package $version [list source [file join $dir {*}$file]]
}
}} $dir

1343
src/runtime/tcl_library/msgcat/msgcat.tcl

File diff suppressed because it is too large Load Diff

2
src/runtime/tcl_library/msgcat/pkgIndex.tcl

@ -1,2 +0,0 @@
if {![package vsatisfies [package provide Tcl] 8.7-]} {return}
package ifneeded msgcat 1.7.1 [list source [file join $dir msgcat.tcl]]

49
src/runtime/tcl_library/msgs/af.msg

@ -1,49 +0,0 @@
# created by tools/loadICU.tcl -- do not edit
namespace eval ::tcl::clock {
::msgcat::mcset af DAYS_OF_WEEK_ABBREV [list \
"So"\
"Ma"\
"Di"\
"Wo"\
"Do"\
"Vr"\
"Sa"]
::msgcat::mcset af DAYS_OF_WEEK_FULL [list \
"Sondag"\
"Maandag"\
"Dinsdag"\
"Woensdag"\
"Donderdag"\
"Vrydag"\
"Saterdag"]
::msgcat::mcset af MONTHS_ABBREV [list \
"Jan"\
"Feb"\
"Mar"\
"Apr"\
"Mei"\
"Jun"\
"Jul"\
"Aug"\
"Sep"\
"Okt"\
"Nov"\
"Des"\
""]
::msgcat::mcset af MONTHS_FULL [list \
"Januarie"\
"Februarie"\
"Maart"\
"April"\
"Mei"\
"Junie"\
"Julie"\
"Augustus"\
"September"\
"Oktober"\
"November"\
"Desember"\
""]
::msgcat::mcset af AM "VM"
::msgcat::mcset af PM "NM"
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save