texlive[62700] Master/tlpkg/tltcl: New Tcl/Tk

commits+siepo at tug.org commits+siepo at tug.org
Mon Mar 14 11:03:12 CET 2022


Revision: 62700
          http://tug.org/svn/texlive?view=revision&revision=62700
Author:   siepo
Date:     2022-03-14 11:03:11 +0100 (Mon, 14 Mar 2022)
Log Message:
-----------
New Tcl/Tk

Modified Paths:
--------------
    trunk/Master/tlpkg/tltcl/bin/tcl86.dll
    trunk/Master/tlpkg/tltcl/bin/tclsh.exe
    trunk/Master/tlpkg/tltcl/bin/tclsh86.exe
    trunk/Master/tlpkg/tltcl/bin/tk86.dll
    trunk/Master/tlpkg/tltcl/bin/wish.exe
    trunk/Master/tlpkg/tltcl/bin/wish86.exe
    trunk/Master/tlpkg/tltcl/bin/zlib1.dll
    trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
    trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.3.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-7.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/init.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/optparse.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/safe.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Accra
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Juba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anguilla
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Antigua
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Aruba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atikokan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Barbados
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Blanc-Sablon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Coral_Harbour
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Creston
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Curacao
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dominica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grenada
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guadeloupe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guyana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kralendijk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lower_Princes
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Marigot
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montserrat
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nassau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port_of_Spain
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Barthelemy
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Kitts
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Lucia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Thomas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Vincent
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tortola
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Virgin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/DumontDUrville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Syowa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Amman
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Gaza
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hebron
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Azores
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Madeira
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Lisbon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Apia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Enderbury
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fiji
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Niue
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Rarotonga
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tongatapu
    trunk/Master/tlpkg/tltcl/lib/tclConfig.sh
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/cscroll.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/widget
    trunk/Master/tlpkg/tltcl/lib/tk8.6/fontchooser.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/icons.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/listbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/menu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tearoff.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/text.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tk.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tkAppInit.c
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/aquaTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/menubutton.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/notebook.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scrollbar.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/utils.tcl
    trunk/Master/tlpkg/tltcl/lib/tkConfig.sh

Added Paths:
-----------
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclConfig.sh
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclHullCmds.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclWidget.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/
    trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.18.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.3.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cns11643.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-11.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kanton
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbcConfig.sh
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll
    trunk/Master/tlpkg/tltcl/lib/thread2.8.7/
    trunk/Master/tlpkg/tltcl/lib/thread2.8.7/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll
    trunk/Master/tlpkg/tltcl/lib/thread2.8.7/ttrace.tcl

Removed Paths:
-------------
    trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.dll.a
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.1/
    trunk/Master/tlpkg/tltcl/lib/libtcl86.dll.a
    trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
    trunk/Master/tlpkg/tltcl/lib/libtk86.dll.a
    trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
    trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.dll.a
    trunk/Master/tlpkg/tltcl/lib/sqlite3.34.0/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.15.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.2/
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.2/
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.2/
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.2/
    trunk/Master/tlpkg/tltcl/lib/thread2.8.6/

Modified: trunk/Master/tlpkg/tltcl/bin/tcl86.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/tclsh.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/tclsh86.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/tk86.dll
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/wish.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/wish86.exe
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/bin/zlib1.dll
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.dll.a
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,7 +1,12 @@
-if {![package vsatisfies [package provide Tcl] 8.5]} return
 if {[info sharedlibextension] != ".dll"} return
-if {[::tcl::pkgconfig get debug]} {
-    package ifneeded dde 1.4.3 [list load [file join $dir tcldde14g.dll] Dde]
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded dde 1.4.4 \
+	    [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.4 \
+	    [list load [file join $dir tcldde14g.dll] Dde]
 } else {
-    package ifneeded dde 1.4.3 [list load [file join $dir tcldde14.dll] Dde]
+    package ifneeded dde 1.4.4 \
+	    [list load [file join $dir tcldde14.dll] Dde]
 }

Modified: trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
===================================================================
(Binary files differ)

Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,151 @@
+#
+# itcl.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl].
+# ----------------------------------------------------------------------
+#   AUTHOR:  Michael J. McLennan
+#            Bell Labs Innovations for Lucent Technologies
+#            mmclennan at lucent.com
+#            http://www.tcltk.com/itcl
+# ----------------------------------------------------------------------
+#            Copyright (c) 1993-1998  Lucent Technologies, Inc.
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+proc ::itcl::delete_helper { name args } {
+    ::itcl::delete object $name
+}
+
+# ----------------------------------------------------------------------
+#  USAGE:  local <className> <objName> ?<arg> <arg>...?
+#
+#  Creates a new object called <objName> in class <className>, passing
+#  the remaining <arg>'s to the constructor.  Unlike the usual
+#  [incr Tcl] objects, however, an object created by this procedure
+#  will be automatically deleted when the local call frame is destroyed.
+#  This command is useful for creating objects that should only remain
+#  alive until a procedure exits.
+# ----------------------------------------------------------------------
+proc ::itcl::local {class name args} {
+    set ptr [uplevel [list $class $name] $args]
+    uplevel [list set itcl-local-$ptr $ptr]
+    set cmd [uplevel namespace which -command $ptr]
+    uplevel [list trace variable itcl-local-$ptr u \
+        "::itcl::delete_helper $cmd"]
+    return $ptr
+}
+
+# ----------------------------------------------------------------------
+# auto_mkindex
+# ----------------------------------------------------------------------
+# Define Itcl commands that will be recognized by the auto_mkindex
+# parser in Tcl...
+#
+
+#
+# USAGE:  itcl::class name body
+# Adds an entry for the given class declaration.
+#
+foreach __cmd {itcl::class class itcl::type type ictl::widget widget itcl::widgetadaptor widgetadaptor itcl::extendedclass extendedclass} {
+    auto_mkindex_parser::command $__cmd {name body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+
+	variable parser
+	variable contextStack
+	set contextStack [linsert $contextStack 0 $name]
+	$parser eval $body
+	set contextStack [lrange $contextStack 1 end]
+    }
+}
+
+#
+# USAGE:  itcl::body name arglist body
+# Adds an entry for the given method/proc body.
+#
+foreach __cmd {itcl::body body} {
+    auto_mkindex_parser::command $__cmd {name arglist body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  itcl::configbody name arglist body
+# Adds an entry for the given method/proc body.
+#
+foreach __cmd {itcl::configbody configbody} {
+    auto_mkindex_parser::command $__cmd {name body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  ensemble name ?body?
+# Adds an entry to the auto index list for the given ensemble name.
+#
+foreach __cmd {itcl::ensemble ensemble} {
+    auto_mkindex_parser::command $__cmd {name {body ""}} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  public arg ?arg arg...?
+#         protected arg ?arg arg...?
+#         private arg ?arg arg...?
+#
+# Evaluates the arguments as commands, so we can recognize proc
+# declarations within classes.
+#
+foreach __cmd {public protected private} {
+    auto_mkindex_parser::command $__cmd {args} {
+        variable parser
+        $parser eval $args
+    }
+}
+
+# SF bug #246 unset variable __cmd to avoid problems in user programs!!
+unset __cmd
+
+# ----------------------------------------------------------------------
+# auto_import
+# ----------------------------------------------------------------------
+# This procedure overrides the usual "auto_import" function in the
+# Tcl library.  It is invoked during "namespace import" to make see
+# if the imported commands reside in an autoloaded library.  If so,
+# stubs are created to represent the commands.  Executing a stub
+# later on causes the real implementation to be autoloaded.
+#
+# 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
+
+    set ns [uplevel namespace current]
+    set patternList [auto_qualify $pattern $ns]
+
+    auto_load_index
+
+    foreach pattern $patternList {
+        foreach name [array names auto_index $pattern] {
+            if {"" == [info commands $name]} {
+                ::itcl::import::stub create $name
+            }
+        }
+    }
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itcl422.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclConfig.sh
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclConfig.sh	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclConfig.sh	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,67 @@
+# itclConfig.sh --
+#
+# This shell script (for sh) is generated automatically by Itcl's
+# configure script.  It will create shell variables for most of
+# the configuration options discovered by the configure script.
+# This script is intended to be included by the configure scripts
+# for Itcl extensions so that they don't have to figure this all
+# out for themselves.  This file does not duplicate information
+# already provided by tclConfig.sh, so you may need to use that
+# file in addition to this one.
+#
+# The information in this file is specific to a single platform.
+
+# Itcl's version number.
+itcl_VERSION='4.2.2'
+ITCL_VERSION='4.2.2'
+
+# The name of the Itcl library (may be either a .a file or a shared library):
+itcl_LIB_FILE=itcl422.dll
+ITCL_LIB_FILE=itcl422.dll
+
+# String to pass to linker to pick up the Itcl library from its
+# build directory.
+itcl_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2 -litcl422'
+ITCL_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2 -litcl422'
+
+# String to pass to linker to pick up the Itcl library from its
+# installed directory.
+itcl_LIB_SPEC='-L/tmp/tltcl/lib/itcl4.2.2 -litcl422'
+ITCL_LIB_SPEC='-L/tmp/tltcl/lib/itcl4.2.2 -litcl422'
+
+# The name of the Itcl stub library (a .a file):
+itcl_STUB_LIB_FILE=libitclstub422.a
+ITCL_STUB_LIB_FILE=libitclstub422.a
+
+# String to pass to linker to pick up the Itcl stub library from its
+# build directory.
+itcl_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2 -litclstub422'
+ITCL_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2 -litclstub422'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# installed directory.
+itcl_STUB_LIB_SPEC='-L/tmp/tltcl/lib/itcl4.2.2 -litclstub422'
+ITCL_STUB_LIB_SPEC='-L/tmp/tltcl/lib/itcl4.2.2 -litclstub422'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# build directory.
+itcl_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2/libitclstub422.a'
+ITCL_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/itcl4.2.2/libitclstub422.a'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# installed directory.
+itcl_STUB_LIB_PATH='/tmp/tltcl/lib/itcl4.2.2/libitclstub422.a'
+ITCL_STUB_LIB_PATH='/tmp/tltcl/lib/itcl4.2.2/libitclstub422.a'
+
+# Location of the top-level source directories from which [incr Tcl]
+# was built.  This is the directory that contains generic, unix, etc.
+# If [incr Tcl] was compiled in a different place than the directory
+# containing the source files, this points to the location of the sources,
+# not the location where [incr Tcl] was compiled.
+itcl_SRC_DIR='/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/itcl4.2.2'
+ITCL_SRC_DIR='/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/itcl4.2.2'
+
+# String to pass to the compiler so that an extension can
+# find installed Itcl headers.
+itcl_INCLUDE_SPEC='-I/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/itcl4.2.2/generic'
+ITCL_INCLUDE_SPEC='-I/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/itcl4.2.2/generic'


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclConfig.sh
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclHullCmds.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclHullCmds.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclHullCmds.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,562 @@
+#
+# itclHullCmds.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl] when one of setupcomponent or createhull is called.
+# ----------------------------------------------------------------------
+#   AUTHOR:  Arnulf P. Wiedemann
+#
+# ----------------------------------------------------------------------
+#            Copyright (c) 2008  Arnulf P. Wiedemann
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tk 8.6
+
+namespace eval ::itcl::internal::commands {
+
+# ======================= widgetDeleted ===========================
+
+proc widgetDeleted {oldName newName op} {
+    # The widget is beeing deleted, so we have to delete the object
+    # which had the widget as itcl_hull too!
+    # We have to get the real name from for example
+    # ::itcl::internal::widgets::hull1.lw
+    # we need only .lw here
+
+#puts stderr "widgetDeleted!$oldName!$newName!$op!"
+    set cmdName [namespace tail $oldName]
+    set flds [split $cmdName {.}]
+    set cmdName .[join [lrange $flds 1 end] {.}]
+#puts stderr "DELWIDGET![namespace current]!$cmdName![::info command $cmdName]!"
+    rename $cmdName {}
+}
+
+}
+
+namespace eval ::itcl::builtin {
+
+# ======================= createhull ===========================
+# the hull widget is a tk widget which is the (mega) widget handled behind the itcl
+# extendedclass/itcl widget.
+# It is created be renaming the itcl class object to a temporary name <itcl object name>_
+# creating the widget with the
+# appropriate options and the installing that as the "hull" widget (the container)
+# All the options in args and the options delegated to component itcl_hull are used
+# Then a unique name (hull_widget_name) in the itcl namespace is created for widget:
+# ::itcl::internal::widgets::hull<unique number><namespace tail path>
+# and widget is renamed to that name
+# Finally the <itcl object name>_ is renamed to the original <itcl object name> again
+# Component itcl_hull is created if not existent
+# itcl_hull is set to the hull_widget_name and the <itcl object name>
+# is returned to the caller
+# ==============================================================
+
+proc createhull {widget_type path args} {
+    variable hullCount
+    upvar this this
+    upvar win win
+
+
+#puts stderr "il-1![::info level -1]!$this!"
+#puts stderr "createhull!$widget_type!$path!$args!$this![::info command $this]!"
+#puts stderr "ns1![uplevel 1 namespace current]!"
+#puts stderr "ns2![uplevel 2 namespace current]!"
+#puts stderr "ns3![uplevel 3 namespace current]!"
+#puts stderr "level-1![::info level -1]!"
+#puts stderr "level-2![::info level -2]!"
+#    set my_this [namespace tail $this]
+    set my_this $this
+    set tmp $my_this
+#puts stderr "II![::info command $this]![::info command $tmp]!"
+#puts stderr "rename1!rename $my_this ${tmp}_!"
+    rename ::$my_this ${tmp}_
+    set options [list]
+    foreach {option_name value} $args {
+        switch -glob -- $option_name {
+	-class {
+	      lappend options $option_name [namespace tail $value]
+	  }
+        -* {
+            lappend options $option_name $value
+          }
+        default {
+	    return -code error "bad option name\"$option_name\" options must start with a \"-\""
+          }
+        }
+    }
+    set my_win [namespace tail $path]
+    set cmd [list $widget_type $my_win]
+#puts stderr "my_win!$my_win!cmd!$cmd!$path!"
+    if {[llength $options] > 0} {
+        lappend cmd {*}$options
+    }
+    set widget [uplevel 1 $cmd]
+#puts stderr "widget!$widget!"
+    trace add command $widget delete ::itcl::internal::commands::widgetDeleted
+    set opts [uplevel 1 info delegated options]
+    foreach entry $opts {
+        foreach {optName compName} $entry break
+	if {$compName eq "itcl_hull"} {
+	    set optInfos [uplevel 1 info delegated option $optName]
+	    set realOptName [lindex $optInfos 4]
+	    # strip off the "-" at the beginning
+	    set myOptName [string range $realOptName 1 end]
+            set my_opt_val [option get $my_win $myOptName *]
+            if {$my_opt_val ne ""} {
+                $my_win configure -$myOptName $my_opt_val
+            }
+	}
+    }
+    set idx 1
+    while {1} {
+        set widgetName ::itcl::internal::widgets::hull${idx}$my_win
+#puts stderr "widgetName!$widgetName!"
+	if {[string length [::info command $widgetName]] == 0} {
+	    break
+	}
+        incr idx
+    }
+#puts stderr "rename2!rename $widget $widgetName!"
+    set dorename 0
+    rename $widget $widgetName
+#puts stderr "rename3!rename ${tmp}_ $tmp![::info command ${tmp}_]!my_this!$my_this!"
+    rename ${tmp}_ ::$tmp
+    set exists [uplevel 1 ::info exists itcl_hull]
+    if {!$exists} {
+	# that does not yet work, beacause of problems with resolving
+        ::itcl::addcomponent $my_this itcl_hull
+    }
+    upvar itcl_hull itcl_hull
+    ::itcl::setcomponent $my_this itcl_hull $widgetName
+#puts stderr "IC![::info command $my_win]!"
+    set exists [uplevel 1 ::info exists itcl_interior]
+    if {!$exists} {
+	# that does not yet work, beacause of problems with resolving
+        ::itcl::addcomponent $this itcl_interior
+    }
+    upvar itcl_interior itcl_interior
+    set itcl_interior $my_win
+#puts stderr "hull end!win!$win!itcl_hull!$itcl_hull!itcl_interior!$itcl_interior!"
+    return $my_win
+}
+
+# ======================= addToItclOptions ===========================
+
+proc addToItclOptions {my_class my_win myOptions argsDict} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+    set opt_lst [list configure]
+    foreach opt [lsort $myOptions] {
+#puts stderr "IOPT!$opt!$my_class!$my_win![::itcl::is class $my_class]!"
+        set isClass [::itcl::is class $my_class]
+	set found 0
+	if {$isClass} {
+            if {[catch {
+                set resource [namespace eval $my_class info option $opt -resource]
+                set class [namespace eval $my_class info option $opt -class]
+                set default_val [uplevel 2 info option $opt -default]
+                set found 1
+            } msg]} {
+#                puts stderr "MSG!$opt!$my_class!$msg!"
+            }
+        } else {
+            set tmp_win [uplevel #0 $my_class .___xx]
+
+            set my_info [$tmp_win configure $opt]
+            set resource [lindex $my_info 1]
+            set class [lindex $my_info 2]
+            set default_val [lindex $my_info 3]
+	    uplevel #0 destroy $tmp_win
+            set found 1
+        }
+	if {$found} {
+           if {[catch {
+               set val [uplevel #0 ::option get $win $resource $class]
+           } msg]} {
+               set val ""
+           }
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+           set ::itcl::internal::variables::${my_win}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${my_win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+#	   uplevel 1 [list set itcl_options($opt) [list $val]]
+           if {[catch {uplevel 1 $win configure $opt [list $val]} msg]} {
+#puts stderr "addToItclOptions ERR!$msg!$my_class!$win!configure!$opt!$val!"
+	   }
+        }
+    }
+}
+
+# ======================= setupcomponent ===========================
+
+proc setupcomponent {comp using widget_type path args} {
+    upvar this this
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+#puts stderr "setupcomponent!$comp!$widget_type!$path!$args!$this!$win!$itcl_hull!"
+#puts stderr "CONT![uplevel 1 info context]!"
+#puts stderr "ns1![uplevel 1 namespace current]!"
+#puts stderr "ns2![uplevel 2 namespace current]!"
+#puts stderr "ns3![uplevel 3 namespace current]!"
+    set my_comp_object  [lindex [uplevel 1 info context] 1]
+    if {[::info exists ::itcl::internal::component_objects($my_comp_object)]} {
+        set my_comp_object [set ::itcl::internal::component_objects($my_comp_object)]
+    } else {
+        set ::itcl::internal::component_objects($path) $my_comp_object
+    }
+    set options [list]
+    foreach {option_name value} $args {
+        switch -glob -- $option_name {
+        -* {
+            lappend options $option_name $value
+          }
+        default {
+	    return -code error "bad option name\"$option_name\" options must start with a \"-\""
+          }
+        }
+    }
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set cmd [list $widget_type $path]
+    if {[llength $options] > 0} {
+        lappend cmd {*}$options
+    }
+#puts stderr "cmd0![::info command $widget_type]!$path![::info command $path]!"
+#puts stderr "cmd1!$cmd!"
+#    set my_comp [uplevel 3 $cmd]
+    set my_comp [uplevel #0 $cmd]
+#puts stderr 111![::info command $path]!
+    ::itcl::setcomponent $this $comp $my_comp
+    set opts [uplevel 1 info delegated options]
+    foreach entry $opts {
+        foreach {optName compName} $entry break
+	if {$compName eq $my_comp} {
+	    set optInfos [uplevel 1 info delegated option $optName]
+	    set realOptName [lindex $optInfos 4]
+	    # strip off the "-" at the beginning
+	    set myOptName [string range $realOptName 1 end]
+            set my_opt_val [option get $my_win $myOptName *]
+            if {$my_opt_val ne ""} {
+                $my_comp configure -$myOptName $my_opt_val
+            }
+	}
+    }
+    set my_class $widget_type
+    set my_parent_class [uplevel 1 namespace current]
+    if {[catch {
+        set myOptions [namespace eval $my_class {info classoptions}]
+    } msg]} {
+        set myOptions [list]
+    }
+    foreach entry [$path configure] {
+        foreach {opt dummy1 dummy2 dummy3} $entry break
+        lappend myOptions $opt
+    }
+#puts stderr "OPTS!$myOptions!"
+    addToItclOptions $widget_type $my_comp_object $myOptions $argsDict
+#puts stderr END!$path![::info command $path]!
+}
+
+proc itcl_initoptions {args} {
+puts stderr "ITCL_INITOPT!$args!"
+}
+
+# ======================= initoptions ===========================
+
+proc initoptions {args} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+    upvar itcl_option_components itcl_option_components
+
+#puts stderr "INITOPT!!$win!"
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set my_class [uplevel 1 namespace current]
+    set myOptions [namespace eval $my_class {info classoptions}]
+    if {[dict exists $::itcl::internal::dicts::classComponents $my_class]} {
+        set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
+#    set myOptions [lsort -unique [namespace eval $my_class {info options}]]
+        foreach comp [uplevel 1 info components] {
+           if {[dict exists $class_info_dict $comp -keptoptions]} {
+               foreach my_opt [dict get $class_info_dict $comp -keptoptions] {
+                   if {[lsearch $myOptions $my_opt] < 0} {
+#puts stderr "KEOPT!$my_opt!"
+                       lappend myOptions $my_opt
+                   }
+               }
+           }
+        }
+    } else {
+        set class_info_dict [list]
+    }
+#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
+    set opt_lst [list configure]
+    set my_win $win
+    foreach opt [lsort $myOptions] {
+	set found 0
+        if {[catch {
+            set resource [uplevel 1 info option $opt -resource]
+            set class [uplevel 1 info option $opt -class]
+            set default_val [uplevel 1 info option $opt -default]
+	    set found 1
+        } msg]} {
+#            puts stderr "MSG!$opt!$msg!"
+        }
+#puts stderr "OPT!$opt!$found!"
+	if {$found} {
+           if {[catch {
+               set val [uplevel #0 ::option get $my_win $resource $class]
+           } msg]} {
+               set val ""
+           }
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+           set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+#	   uplevel 1 [list set itcl_options($opt) [list $val]]
+           if {[catch {uplevel 1 $my_win configure $opt [list $val]} msg]} {
+puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
+	   }
+        }
+        foreach comp [dict keys $class_info_dict] {
+#puts stderr "OPT1!$opt!$comp![dict get $class_info_dict $comp]!"
+            if {[dict exists $class_info_dict $comp -keptoptions]} {
+                if {[lsearch [dict get $class_info_dict $comp -keptoptions] $opt] >= 0} {
+                    if {$found == 0} {
+                        # we use the option value of the first component for setting
+                        # the option, as the components are traversed in the dict
+                        # depending on the ordering of the component creation!!
+                        set my_info [uplevel 1 \[set $comp\] configure $opt]
+                        set resource [lindex $my_info 1]
+                        set class [lindex $my_info 2]
+                        set default_val [lindex $my_info 3]
+                        set found 2
+                        set val [uplevel #0 ::option get $my_win $resource $class]
+                        if {[::dict exists $argsDict $opt]} {
+                            # we have an explicitly set option
+                            set val [::dict get $argsDict $opt]
+                        } else {
+	                    if {[string length $val] == 0} {
+                                set val $default_val
+	                    }
+                        }
+#puts stderr "OPT2!$opt!$val!"
+		        set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+		        set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#	                uplevel 1 [list set itcl_options($opt) [list $val]]
+                    }
+                    if {[catch {uplevel 1 \[set $comp\] configure $opt [list $val]} msg]} {
+puts stderr "initoptions ERR2!$msg!$my_class!$comp!configure!$opt!$val!"
+	            }
+		    if {![uplevel 1 info exists itcl_option_components($opt)]} {
+                        set itcl_option_components($opt) [list]
+		    }
+		    if {[lsearch [set itcl_option_components($opt)] $comp] < 0} {
+		        if {![catch {
+		            set optval [uplevel 1 [list set itcl_options($opt)]]
+                        } msg3]} {
+                                uplevel 1 \[set $comp\] configure $opt $optval
+                        }
+                        lappend itcl_option_components($opt) $comp
+		    }
+                }
+            }
+        }
+    }
+#    uplevel 1 $opt_lst
+}
+
+# ======================= setoptions ===========================
+
+proc setoptions {args} {
+
+#puts stderr "setOPT!!$args!"
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set my_class [uplevel 1 namespace current]
+    set myOptions [namespace eval $my_class {info options}]
+#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
+    set opt_lst [list configure]
+    foreach opt [lsort $myOptions] {
+	set found 0
+        if {[catch {
+            set resource [uplevel 1 info option $opt -resource]
+            set class [uplevel 1 info option $opt -class]
+            set default_val [uplevel 1 info option $opt -default]
+	    set found 1
+        } msg]} {
+#            puts stderr "MSG!$opt!$msg!"
+        }
+#puts stderr "OPT!$opt!$found!"
+	if {$found} {
+           set val ""
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+	   set myObj [uplevel 1 set this]
+#puts stderr "myObj!$myObj!"
+           set ::itcl::internal::variables::${myObj}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${myObj}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+	   uplevel 1 [list set itcl_options($opt) [list $val]]
+#           if {[catch {uplevel 1 $myObj configure $opt [list $val]} msg]} {
+#puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
+#	   }
+        }
+    }
+#    uplevel 1 $opt_lst
+}
+
+# ========================= keepcomponentoption ======================
+#  Invoked by Tcl during evaluating constructor whenever
+#  the "keepcomponentoption" command is invoked to list the options
+#  to be kept when an ::itcl::extendedclass component has been setup
+#  for an object.
+#
+#  It checks, for all arguments, if the opt is an option of that class
+#  and of that component. If that is the case it adds the component name
+#  to the list of components for that option.
+#  The variable is the object variable: itcl_option_components($opt)
+#
+#  Handles the following syntax:
+#
+#    keepcomponentoption <componentName> <optionName> ?<optionName> ...?
+#
+# ======================================================================
+
+
+proc keepcomponentoption {args} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+    set usage "wrong # args, should be: keepcomponentoption componentName optionName ?optionName ...?"
+
+#puts stderr "KEEP!$args![uplevel 1 namespace current]!"
+    if {[llength $args] < 2} {
+        puts stderr $usage
+	return -code error
+    }
+    set my_hull [uplevel 1 set itcl_hull]
+    set my_class [uplevel 1 namespace current]
+    set comp [lindex $args 0]
+    set args [lrange $args 1 end]
+    set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
+    if {![dict exists $class_info_dict $comp]} {
+        puts stderr "keepcomponentoption cannot find component \"$comp\""
+	return -code error
+    }
+    set class_comp_dict [dict get $class_info_dict $comp]
+    if {![dict exists $class_comp_dict -keptoptions]} {
+        dict set class_comp_dict -keptoptions [list]
+    }
+    foreach opt $args {
+#puts stderr "KEEP!$opt!"
+	if {[string range $opt 0 0] ne "-"} {
+            puts stderr "keepcomponentoption: option must begin with a \"-\"!"
+	    return -code error
+	}
+        if {[lsearch [dict get $class_comp_dict -keptoptions] $opt] < 0} {
+            dict lappend class_comp_dict -keptoptions $opt
+	}
+    }
+    if {![info exists ::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])]} {
+        set comp_object $::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])
+    } else {
+        set comp_object "unknown_comp_obj_$comp!"
+    }
+    dict set class_info_dict $comp $class_comp_dict
+    dict set ::itcl::internal::dicts::classComponents $my_class $class_info_dict
+puts stderr "CLDI!$class_comp_dict!"
+    addToItclOptions $my_class $comp_object $args [list]
+}
+
+proc ignorecomponentoption {args} {
+puts stderr "IGNORE_COMPONENT_OPTION!$args!"
+}
+
+proc renamecomponentoption {args} {
+puts stderr "rename_COMPONENT_OPTION!$args!"
+}
+
+proc addoptioncomponent {args} {
+puts stderr "ADD_OPTION_COMPONENT!$args!"
+}
+
+proc ignoreoptioncomponent {args} {
+puts stderr "IGNORE_OPTION_COMPONENT!$args!"
+}
+
+proc renameoptioncomponent {args} {
+puts stderr "RENAME_OPTION_COMPONENT!$args!"
+}
+
+proc getEclassOptions {args} {
+    upvar win win
+
+#puts stderr "getEclassOptions!$args!$win![uplevel 1 namespace current]!"
+#parray ::itcl::internal::variables::${win}::itcl_options
+    set result [list]
+    foreach opt [array names ::itcl::internal::variables::${win}::itcl_options] {
+        if {[catch {
+            foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
+            lappend result [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
+        } msg]} {
+        }
+    }
+    return $result
+}
+
+proc eclassConfigure {args} {
+    upvar win win
+
+#puts stderr "+++ eclassConfigure!$args!"
+    if {[llength $args] > 1} {
+        foreach {opt val}  $args break
+        if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
+            set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+	    return
+        }
+    } else {
+        foreach {opt}  $args break
+        if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
+#puts stderr "OP![set ::itcl::internal::variables::${win}::itcl_options($opt)]!"
+            foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
+            return [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
+        }
+    }
+    return -code error
+}
+
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclHullCmds.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclWidget.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclWidget.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclWidget.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,447 @@
+#
+# itclWidget.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl] when one of ::itcl::widget or ::itcl::widgetadaptor is called.
+# ----------------------------------------------------------------------
+#   AUTHOR:  Arnulf P. Wiedemann
+#
+# ----------------------------------------------------------------------
+#            Copyright (c) 2008  Arnulf P. Wiedemann
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tk 8.6
+# package require itclwidget [set ::itcl::version]
+
+namespace eval ::itcl {
+
+proc widget {name args} {
+    set result [uplevel 1 ::itcl::internal::commands::genericclass widget $name $args]
+    # we handle create by owerselfs !! allow classunknown to handle that
+    oo::objdefine $result unexport create
+    return $result
+}
+
+proc widgetadaptor {name args} {
+    set result [uplevel 1 ::itcl::internal::commands::genericclass widgetadaptor $name $args]
+    # we handle create by owerselfs !! allow classunknown to handle that
+    oo::objdefine $result unexport create
+    return $result
+}
+
+} ; # end ::itcl
+
+
+namespace eval ::itcl::internal::commands {
+
+proc initWidgetOptions {varNsName widgetName className} {
+    set myDict [set ::itcl::internal::dicts::classOptions]
+    if {$myDict eq ""} {
+        return
+    }
+    if {![dict exists $myDict $className]} {
+        return
+    }
+    set myDict [dict get $myDict $className]
+    foreach option [dict keys $myDict] {
+        set infos [dict get $myDict $option]
+	set resource [dict get $infos -resource]
+	set class [dict get $infos -class]
+	set value [::option get $widgetName $resource $class]
+	if {$value eq ""} {
+	    if {[dict exists $infos -default]} {
+	        set defaultValue [dict get $infos -default]
+	        uplevel 1 set ${varNsName}::itcl_options($option) $defaultValue
+	    }
+	} else {
+	    uplevel 1 set ${varNsName}::itcl_options($option) $value
+	}
+    }
+}
+
+proc initWidgetDelegatedOptions {varNsName widgetName className args} {
+    set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
+    if {$myDict eq ""} {
+        return
+    }
+    if {![dict exists $myDict $className]} {
+        return
+    }
+    set myDict [dict get $myDict $className]
+    foreach option [dict keys $myDict] {
+        set infos [dict get $myDict $option]
+	if {![dict exists $infos -resource]} {
+	    # this is the case when delegating "*"
+	    continue
+	}
+	if {![dict exists $infos -component]} {
+	    # nothing to do
+	    continue
+	}
+	# check if not in the command line options
+	# these have higher priority
+	set myOption $option
+	if {[dict exists $infos -as]} {
+	   set myOption [dict get $infos -as]
+	}
+	set noOptionSet 0
+	foreach {optName optVal} $args {
+	    if {$optName eq $myOption} {
+	        set noOptionSet 1
+		break
+	    }
+	}
+	if {$noOptionSet} {
+	    continue
+	}
+	set resource [dict get $infos -resource]
+	set class [dict get $infos -class]
+	set component [dict get $infos -component]
+	set value [::option get $widgetName $resource $class]
+	if {$component ne ""} {
+	    if {$value ne ""} {
+		set compVar [namespace eval ${varNsName}${className} "set $component"]
+		if {$compVar ne ""} {
+	            uplevel 1 $compVar configure $myOption $value
+	        }
+	    }
+	}
+    }
+}
+
+proc widgetinitobjectoptions {varNsName widgetName className} {
+#puts stderr "initWidgetObjectOptions!$varNsName!$widgetName!$className!"
+}
+
+proc deletehull {newName oldName what} {
+    if {$what eq "delete"} {
+        set name [namespace tail $newName]
+        regsub {hull[0-9]+} $name {} name
+        rename $name {}
+    }
+    if {$what eq "rename"} {
+        set name [namespace tail $newName]
+        regsub {hull[0-9]+} $name {} name
+        rename $name {}
+    }
+}
+
+proc hullandoptionsinstall {objectName className widgetClass hulltype args} {
+    if {$hulltype eq ""} {
+        set hulltype frame
+    }
+    set idx 0
+    set found 0
+    foreach {optName optValue} $args {
+	if {$optName eq "-class"} {
+	    set found 1
+	    set widgetClass $optValue
+	    break
+	}
+        incr idx
+    }
+    if {$found} {
+        set args [lreplace $args $idx [expr {$idx + 1}]]
+    }
+    if {$widgetClass eq ""} {
+        set widgetClass $className
+	set widgetClass [string totitle $widgetClass]
+    }
+    set cmd "set win $objectName; ::itcl::builtin::installhull using $hulltype -class $widgetClass $args"
+    uplevel 2 $cmd
+}
+
+} ; # end ::itcl::internal::commands
+
+namespace eval ::itcl::builtin {
+
+proc installhull {args} {
+    set cmdPath ::itcl::internal::commands
+    set className [uplevel 1 info class]
+
+    set replace 0
+    switch -- [llength $args] {
+	0	{
+		return -code error\
+		"wrong # args: should be \"[lindex [info level 0] 0]\
+		name|using <widgetType> ?arg ...?\""
+	}
+	1	{
+		set widgetName [lindex $args 0]
+		set varNsName $::itcl::internal::varNsName($widgetName)
+	}
+	default	{
+		upvar win win
+		set widgetName $win
+
+		set varNsName $::itcl::internal::varNsName($widgetName)
+	        set widgetType [lindex $args 1]
+		incr replace
+		if {[llength $args] > 3 && [lindex $args 2] eq "-class"} {
+		    set classNam [lindex $args 3]
+		    incr replace 2
+		} else {
+		    set classNam [string totitle $widgetType]
+		}
+		uplevel 1 [lreplace $args 0 $replace $widgetType $widgetName -class $classNam]
+		uplevel 1 [list ${cmdPath}::initWidgetOptions $varNsName $widgetName $className]
+	}
+    }
+
+    # initialize the itcl_hull variable
+    set i 0
+    set nam ::itcl::internal::widgets::hull
+    while {1} {
+         incr i
+	 set hullNam ${nam}${i}$widgetName
+	 if {[::info command $hullNam] eq ""} {
+	     break
+	}
+    }
+    uplevel 1 [list ${cmdPath}::sethullwindowname $widgetName]
+    uplevel 1 [list ::rename $widgetName $hullNam]
+    uplevel 1 [list ::trace add command $hullNam {delete rename} ::itcl::internal::commands::deletehull]
+    catch {${cmdPath}::checksetitclhull [list] 0}
+    namespace eval ${varNsName}${className} "set itcl_hull $hullNam"
+    catch {${cmdPath}::checksetitclhull [list] 2}
+    uplevel 1 [lreplace $args 0 $replace ${cmdPath}::initWidgetDelegatedOptions $varNsName $widgetName $className]
+}
+
+proc installcomponent {args} {
+    upvar win win
+
+    set className [uplevel 1 info class]
+    set myType [${className}::info types [namespace tail $className]]
+    set isType 0
+    if {$myType ne ""} {
+        set isType 1
+    }
+    set numArgs [llength $args]
+    set usage "usage: installcomponent <componentName> using <widgetType> <widgetPath> ?-option value ...?"
+    if {$numArgs < 4} {
+        error $usage
+    }
+    foreach {componentName using widgetType widgetPath} $args break
+    set opts [lrange $args 4 end]
+    if {$using ne "using"} {
+        error $usage
+    }
+    if {!$isType} {
+        set hullExists [uplevel 1 ::info exists itcl_hull]
+        if {!$hullExists} {
+            error "cannot install \"$componentName\" before \"itcl_hull\" exists"
+        }
+        set hullVal [uplevel 1 set itcl_hull]
+        if {$hullVal eq ""} {
+            error "cannot install \"$componentName\" before \"itcl_hull\" exists"
+        }
+    }
+    # check for delegated option and ask the option database for the values
+    # first check for number of delegated options
+    set numOpts 0
+    set starOption 0
+    set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
+    if {[dict exists $myDict $className]} {
+        set myDict [dict get $myDict $className]
+	foreach option [dict keys $myDict] {
+	    if {$option eq "*"} {
+	        set starOption 1
+	    }
+	    incr numOpts
+	}
+    }
+    set myOptionDict [set ::itcl::internal::dicts::classOptions]
+    if {[dict exists $myOptionDict $className]} {
+        set myOptionDict [dict get $myOptionDict $className]
+    }
+    set cmd [list $widgetPath configure]
+    set cmd1 "set $componentName \[$widgetType $widgetPath\]"
+    uplevel 1 $cmd1
+    if {$starOption} {
+	upvar $componentName compName
+	set cmd1 [list $compName configure]
+        set configInfos [uplevel 1 $cmd1]
+	foreach entry $configInfos {
+	    if {[llength $entry] > 2} {
+	        foreach {optName resource class defaultValue} $entry break
+		set val ""
+		catch {
+		    set val [::option get $win $resource $class]
+		}
+		if {$val ne ""} {
+		    set addOpt 1
+		    if {[dict exists $myDict $$optName]} {
+		        set addOpt 0
+		    } else {
+		        set starDict [dict get $myDict "*"]
+			if {[dict exists $starDict -except]} {
+			    set exceptions [dict get $starDict -except]
+			    if {[lsearch $exceptions $optName] >= 0} {
+			        set addOpt 0
+			    }
+
+			}
+			if {[dict exists $myOptionDict $optName]} {
+			    set addOpt 0
+			}
+                    }
+		    if {$addOpt} {
+		        lappend cmd $optName $val
+		    }
+
+		}
+
+	    }
+        }
+    } else {
+        foreach optName [dict keys $myDict] {
+	    set optInfos [dict get $myDict $optName]
+	    set resource [dict get $optInfos -resource]
+	    set class [namespace tail $className]
+	    set class [string totitle $class]
+	    set val ""
+	    catch {
+	        set val [::option get $win $resource $class]
+            }
+	    if {$val ne ""} {
+		if {[dict exists $optInfos -as] } {
+	            set optName [dict get $optInfos -as]
+		}
+		lappend cmd $optName $val
+	    }
+	}
+    }
+    lappend cmd {*}$opts
+    uplevel 1 $cmd
+}
+
+} ; # end ::itcl::builtin
+
+set ::itcl::internal::dicts::hullTypes [list \
+       frame \
+       toplevel \
+       labelframe \
+       ttk:frame \
+       ttk:toplevel \
+       ttk:labelframe \
+    ]
+
+namespace eval ::itcl::builtin::Info {
+
+proc hulltypes {args} {
+    namespace upvar ::itcl::internal::dicts hullTypes hullTypes
+
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info hulltypes ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    if {$pattern ne ""} {
+        return [lsearch -all -inline -glob $hullTypes $pattern]
+    }
+    return $hullTypes
+
+}
+
+proc widgetclasses {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgetclasses ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widget]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widget]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -widget]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -widget]
+	}
+    }
+    return $result
+}
+
+proc widgets {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgets ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widget]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widget]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -name]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -name]
+	}
+    }
+    return $result
+}
+
+proc widgetadaptors {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgetadaptors ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widgetadaptor]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widgetadaptor]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -name]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -name]
+	}
+    }
+    return $result
+}
+
+} ; # end ::itcl::builtin::Info


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/itclWidget.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,14 @@
+# -*- tcl -*-
+# Tcl package index file, version 1.1
+#
+
+if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
+
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded itcl 4.2.2 \
+	    [list load [file join $dir tcl9itcl422.dll] Itcl]
+} else {
+    package ifneeded itcl 4.2.2 \
+	    [list load [file join $dir itcl422.dll] Itcl]
+}
+package ifneeded Itcl 4.2.2 [list package require -exact itcl 4.2.2]


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.2/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/tlpkg/tltcl/lib/libtcl86.dll.a
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tltcl/lib/libtk86.dll.a
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
===================================================================
(Binary files differ)

Deleted: trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.dll.a
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
===================================================================
(Binary files differ)

Added: trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,12 @@
+#
+# Tcl package index file
+#
+# Note sqlite*3* init specifically
+#
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded sqlite3 3.36.0 \
+	    [list load [file join $dir tcl9sqlite3360.dll] Sqlite3]
+} else {
+    package ifneeded sqlite3 3.36.0 \
+	    [list load [file join $dir sqlite3360.dll] Sqlite3]
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/sqlite3.36.0/sqlite3360.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Deleted: trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.15.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.15.tm	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.15.tm	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,423 +0,0 @@
-# -*- tcl -*-
-# ### ### ### ######### ######### #########
-## Overview
-
-# Heuristics to assemble a platform identifier from publicly available
-# information. The identifier describes the platform of the currently
-# running tcl shell. This is a mixture of the runtime environment and
-# of build-time properties of the executable itself.
-#
-# Examples:
-# <1> A tcl shell executing on a x86_64 processor, but having a
-#   wordsize of 4 was compiled for the x86 environment, i.e. 32
-#   bit, and loaded packages have to match that, and not the
-#   actual cpu.
-#
-# <2> The hp/solaris 32/64 bit builds of the core cannot be
-#   distinguished by looking at tcl_platform. As packages have to
-#   match the 32/64 information we have to look in more places. In
-#   this case we inspect the executable itself (magic numbers,
-#   i.e. fileutil::magic::filetype).
-#
-# The basic information used comes out of the 'os' and 'machine'
-# entries of the 'tcl_platform' array. A number of general and
-# os/machine specific transformation are applied to get a canonical
-# result.
-#
-# General
-# Only the first element of 'os' is used - we don't care whether we
-# are on "Windows NT" or "Windows XP" or whatever.
-#
-# Machine specific
-# % arm*   -> arm
-# % sun4*  -> sparc
-# % intel  -> ix86
-# % i*86*  -> ix86
-# % Power* -> powerpc
-# % x86_64 + wordSize 4 => x86 code
-#
-# OS specific
-# % AIX are always powerpc machines
-# % HP-UX 9000/800 etc means parisc
-# % linux has to take glibc version into account
-# % sunos -> solaris, and keep version number
-#
-# NOTE: A platform like linux glibc 2.3, which can use glibc 2.2 stuff
-# has to provide all possible allowed platform identifiers when
-# searching search. Ditto a solaris 2.8 platform can use solaris 2.6
-# packages. Etc. This is handled by the other procedure, see below.
-
-# ### ### ### ######### ######### #########
-## Requirements
-
-namespace eval ::platform {}
-
-# ### ### ### ######### ######### #########
-## Implementation
-
-# -- platform::generic
-#
-# Assembles an identifier for the generic platform. It leaves out
-# details like kernel version, libc version, etc.
-
-proc ::platform::generic {} {
-    global tcl_platform
-
-    set plat [string tolower [lindex $tcl_platform(os) 0]]
-    set cpu  $tcl_platform(machine)
-
-    switch -glob -- $cpu {
-	sun4* {
-	    set cpu sparc
-	}
-	intel -
-	i*86* {
-	    set cpu ix86
-	}
-	x86_64 {
-	    if {$tcl_platform(wordSize) == 4} {
-		# See Example <1> at the top of this file.
-		set cpu ix86
-	    }
-	}
-	"Power*" {
-	    set cpu powerpc
-	}
-	"arm*" {
-	    set cpu arm
-	}
-	ia64 {
-	    if {$tcl_platform(wordSize) == 4} {
-		append cpu _32
-	    }
-	}
-    }
-
-    switch -glob -- $plat {
-	windows {
-	    if {$tcl_platform(platform) == "unix"} {
-		set plat cygwin
-	    } else {
-		set plat win32
-	    }
-	    if {$cpu eq "amd64"} {
-		# Do not check wordSize, win32-x64 is an IL32P64 platform.
-		set cpu x86_64
-	    }
-	}
-	sunos {
-	    set plat solaris
-	    if {[string match "ix86" $cpu]} {
-		if {$tcl_platform(wordSize) == 8} {
-		    set cpu x86_64
-		}
-	    } elseif {![string match "ia64*" $cpu]} {
-		# sparc
-		if {$tcl_platform(wordSize) == 8} {
-		    append cpu 64
-		}
-	    }
-	}
-	darwin {
-	    set plat macosx
-	    # Correctly identify the cpu when running as a 64bit
-	    # process on a machine with a 32bit kernel
-	    if {$cpu eq "ix86"} {
-		if {$tcl_platform(wordSize) == 8} {
-		    set cpu x86_64
-		}
-	    }
-	}
-	aix {
-	    set cpu powerpc
-	    if {$tcl_platform(wordSize) == 8} {
-		append cpu 64
-	    }
-	}
-	hp-ux {
-	    set plat hpux
-	    if {![string match "ia64*" $cpu]} {
-		set cpu parisc
-		if {$tcl_platform(wordSize) == 8} {
-		    append cpu 64
-		}
-	    }
-	}
-	osf1 {
-	    set plat tru64
-	}
-	default {
-	    set plat [lindex [split $plat _-] 0]
-	}
-    }
-
-    return "${plat}-${cpu}"
-}
-
-# -- platform::identify
-#
-# Assembles an identifier for the exact platform, by extending the
-# generic identifier. I.e. it adds in details like kernel version,
-# libc version, etc., if they are relevant for the loading of
-# packages on the platform.
-
-proc ::platform::identify {} {
-    global tcl_platform
-
-    set id [generic]
-    regexp {^([^-]+)-([^-]+)$} $id -> plat cpu
-
-    switch -- $plat {
-	solaris {
-	    regsub {^5} $tcl_platform(osVersion) 2 text
-	    append plat $text
-	    return "${plat}-${cpu}"
-	}
-	macosx {
-	    set major [lindex [split $tcl_platform(osVersion) .] 0]
-	    if {$major > 19} {
-		incr major -20
-		append plat 11.$major
-	    } else {
-		incr major -4
-		append plat 10.$major
-		return "${plat}-${cpu}"
-	    }
-	    return "${plat}-${cpu}"
-	}
-	linux {
-	    # Look for the libc*.so and determine its version
-	    # (libc5/6, libc6 further glibc 2.X)
-
-	    set v unknown
-
-	    # Determine in which directory to look. /lib, or /lib64.
-	    # For that we use the tcl_platform(wordSize).
-	    #
-	    # We could use the 'cpu' info, per the equivalence below,
-	    # that however would be restricted to intel. And this may
-	    # be a arm, mips, etc. system. The wordsize is more
-	    # fundamental.
-	    #
-	    # ix86   <=> (wordSize == 4) <=> 32 bit ==> /lib
-	    # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64
-	    #
-	    # Do not look into /lib64 even if present, if the cpu
-	    # doesn't fit.
-
-	    # TODO: Determine the prefixes (i386, x86_64, ...) for
-	    # other cpus.  The path after the generic one is utterly
-	    # specific to intel right now.  Ok, on Ubuntu, possibly
-	    # other Debian systems we may apparently be able to query
-	    # the necessary CPU code. If we can't we simply use the
-	    # hardwired fallback.
-
-	    switch -exact -- $tcl_platform(wordSize) {
-		4 {
-		    lappend bases /lib
-		    if {[catch {
-			exec dpkg-architecture -qDEB_HOST_MULTIARCH
-		    } res]} {
-			lappend bases /lib/i386-linux-gnu
-		    } else {
-			# dpkg-arch returns the full tripled, not just cpu.
-			lappend bases /lib/$res
-		    }
-		}
-		8 {
-		    lappend bases /lib64
-		    if {[catch {
-			exec dpkg-architecture -qDEB_HOST_MULTIARCH
-		    } res]} {
-			lappend bases /lib/x86_64-linux-gnu
-		    } else {
-			# dpkg-arch returns the full tripled, not just cpu.
-			lappend bases /lib/$res
-		    }
-		}
-		default {
-		    return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8"
-		}
-	    }
-
-	    foreach base $bases {
-		if {[LibcVersion $base -> v]} break
-	    }
-
-	    append plat -$v
-	    return "${plat}-${cpu}"
-	}
-    }
-
-    return $id
-}
-
-proc ::platform::LibcVersion {base _->_ vv} {
-    upvar 1 $vv v
-    set libclist [lsort [glob -nocomplain -directory $base libc*]]
-
-    if {![llength $libclist]} { return 0 }
-
-    set libc [lindex $libclist 0]
-
-    # Try executing the library first. This should suceed
-    # for a glibc library, and return the version
-    # information.
-
-    if {![catch {
-	set vdata [lindex [split [exec $libc] \n] 0]
-    }]} {
-	regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v
-	foreach {major minor} [split $v .] break
-	set v glibc${major}.${minor}
-	return 1
-    } else {
-	# We had trouble executing the library. We are now
-	# inspecting its name to determine the version
-	# number. This code by Larry McVoy.
-
-	if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
-	    set v glibc${major}.${minor}
-	    return 1
-	}
-    }
-    return 0
-}
-
-# -- platform::patterns
-#
-# Given an exact platform identifier, i.e. _not_ the generic
-# identifier it assembles a list of exact platform identifier
-# describing platform which should be compatible with the
-# input.
-#
-# I.e. packages for all platforms in the result list should be
-# loadable on the specified platform.
-
-# << Should we add the generic identifier to the list as well ? In
-#    general it is not compatible I believe. So better not. In many
-#    cases the exact identifier is identical to the generic one
-#    anyway.
-# >>
-
-proc ::platform::patterns {id} {
-    set res [list $id]
-    if {$id eq "tcl"} {return $res}
-
-    switch -glob --  $id {
-	solaris*-* {
-	    if {[regexp {solaris([^-]*)-(.*)} $id -> v cpu]} {
-		if {$v eq ""} {return $id}
-		foreach {major minor} [split $v .] break
-		incr minor -1
-		for {set j $minor} {$j >= 6} {incr j -1} {
-		    lappend res solaris${major}.${j}-${cpu}
-		}
-	    }
-	}
-	linux*-* {
-	    if {[regexp {linux-glibc([^-]*)-(.*)} $id -> v cpu]} {
-		foreach {major minor} [split $v .] break
-		incr minor -1
-		for {set j $minor} {$j >= 0} {incr j -1} {
-		    lappend res linux-glibc${major}.${j}-${cpu}
-		}
-	    }
-	}
-	macosx-powerpc {
-	    lappend res macosx-universal
-	}
-	macosx-x86_64 {
-	    lappend res macosx-i386-x86_64
-	}
-	macosx-ix86 {
-	    lappend res macosx-universal macosx-i386-x86_64
-	}
-	macosx*-*    {
-	    # 10.5+,11.0+
-	    if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} {
-
-		switch -exact -- $cpu {
-		    ix86    {
-			lappend alt i386-x86_64
-			lappend alt universal
-		    }
-		    x86_64  {
-			if {[lindex [split $::tcl_platform(osVersion) .] 0] < 19} {
-			    set alt i386-x86_64
-			} else {
-			    set alt {}
-			}
-		    }
-		    arm  {
-			lappend alt x86_64
-		    }
-		    default { set alt {} }
-		}
-
-		if {$v ne ""} {
-		    foreach {major minor} [split $v .] break
-
-		    set res {}
-		    if {$major eq 11} {
-			# Add 11.0 to 11.minor to patterns.
-			for {set j $minor} {$j >= 0} {incr j -1} {
-			    lappend res macosx${major}.${j}-${cpu}
-			    foreach a $alt {
-				lappend res macosx${major}.${j}-$a
-			    }
-			}
-			set major 10
-			set minor 15
-		    }
-		    # Add 10.5 to 10.minor to patterns.
-		    for {set j $minor} {$j >= 5} {incr j -1} {
-			if {$cpu ne "arm"} {
-			    lappend res macosx${major}.${j}-${cpu}
-			}
-			foreach a $alt {
-			    lappend res macosx${major}.${j}-$a
-			}
-		    }
-
-		    # Add unversioned patterns for 10.3/10.4 builds.
-		    lappend res macosx-${cpu}
-		    foreach a $alt {
-			lappend res macosx-$a
-		    }
-		} else {
-		    # No version, just do unversioned patterns.
-		    foreach a $alt {
-			lappend res macosx-$a
-		    }
-		}
-	    } else {
-		# no v, no cpu ... nothing
-	    }
-	}
-    }
-    lappend res tcl ; # Pure tcl packages are always compatible.
-    return $res
-}
-
-
-# ### ### ### ######### ######### #########
-## Ready
-
-package provide platform 1.0.15
-
-# ### ### ### ######### ######### #########
-## Demo application
-
-if {[info exists argv0] && ($argv0 eq [info script])} {
-    puts ====================================
-    parray tcl_platform
-    puts ====================================
-    puts Generic\ identification:\ [::platform::generic]
-    puts Exact\ identification:\ \ \ [::platform::identify]
-    puts ====================================
-    puts Search\ patterns:
-    puts *\ [join [::platform::patterns [::platform::identify]] \n*\ ]
-    puts ====================================
-    exit 0
-}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.18.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.18.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.18.tm	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,439 @@
+# -*- tcl -*-
+# ### ### ### ######### ######### #########
+## Overview
+
+# Heuristics to assemble a platform identifier from publicly available
+# information. The identifier describes the platform of the currently
+# running tcl shell. This is a mixture of the runtime environment and
+# of build-time properties of the executable itself.
+#
+# Examples:
+# <1> A tcl shell executing on a x86_64 processor, but having a
+#   wordsize of 4 was compiled for the x86 environment, i.e. 32
+#   bit, and loaded packages have to match that, and not the
+#   actual cpu.
+#
+# <2> The hp/solaris 32/64 bit builds of the core cannot be
+#   distinguished by looking at tcl_platform. As packages have to
+#   match the 32/64 information we have to look in more places. In
+#   this case we inspect the executable itself (magic numbers,
+#   i.e. fileutil::magic::filetype).
+#
+# The basic information used comes out of the 'os' and 'machine'
+# entries of the 'tcl_platform' array. A number of general and
+# os/machine specific transformation are applied to get a canonical
+# result.
+#
+# General
+# Only the first element of 'os' is used - we don't care whether we
+# are on "Windows NT" or "Windows XP" or whatever.
+#
+# Machine specific
+# % amd64  -> x86_64
+# % arm*   -> arm
+# % sun4*  -> sparc
+# % ia32*  -> ix86
+# % intel  -> ix86
+# % i*86*  -> ix86
+# % Power* -> powerpc
+# % x86_64 + wordSize 4 => x86 code
+#
+# OS specific
+# % AIX are always powerpc machines
+# % HP-UX 9000/800 etc means parisc
+# % linux has to take glibc version into account
+# % sunos -> solaris, and keep version number
+#
+# NOTE: A platform like linux glibc 2.3, which can use glibc 2.2 stuff
+# has to provide all possible allowed platform identifiers when
+# searching search. Ditto a solaris 2.8 platform can use solaris 2.6
+# packages. Etc. This is handled by the other procedure, see below.
+
+# ### ### ### ######### ######### #########
+## Requirements
+
+namespace eval ::platform {}
+
+# ### ### ### ######### ######### #########
+## Implementation
+
+# -- platform::generic
+#
+# Assembles an identifier for the generic platform. It leaves out
+# details like kernel version, libc version, etc.
+
+proc ::platform::generic {} {
+    global tcl_platform
+
+    set plat [string tolower [lindex $tcl_platform(os) 0]]
+    set cpu  $tcl_platform(machine)
+
+    switch -glob -- $cpu {
+	sun4* {
+	    set cpu sparc
+	}
+	intel -
+	ia32* -
+	i*86* {
+	    set cpu ix86
+	}
+	x86_64 {
+	    if {$tcl_platform(wordSize) == 4} {
+		# See Example <1> at the top of this file.
+		set cpu ix86
+	    }
+	}
+	ppc -
+	"Power*" {
+	    set cpu powerpc
+	}
+	"arm*" {
+	    set cpu arm
+	}
+	ia64 {
+	    if {$tcl_platform(wordSize) == 4} {
+		append cpu _32
+	    }
+	}
+    }
+
+    switch -glob -- $plat {
+	windows {
+	    if {$tcl_platform(platform) == "unix"} {
+		set plat cygwin
+	    } else {
+		set plat win32
+	    }
+	    if {$cpu eq "amd64"} {
+		# Do not check wordSize, win32-x64 is an IL32P64 platform.
+		set cpu x86_64
+	    }
+	}
+	sunos {
+	    set plat solaris
+	    if {[string match "ix86" $cpu]} {
+		if {$tcl_platform(wordSize) == 8} {
+		    set cpu x86_64
+		}
+	    } elseif {![string match "ia64*" $cpu]} {
+		# sparc
+		if {$tcl_platform(wordSize) == 8} {
+		    append cpu 64
+		}
+	    }
+	}
+	darwin {
+	    set plat macosx
+	    # Correctly identify the cpu when running as a 64bit
+	    # process on a machine with a 32bit kernel
+	    if {$cpu eq "ix86"} {
+		if {$tcl_platform(wordSize) == 8} {
+		    set cpu x86_64
+		}
+	    }
+	}
+	aix {
+	    set cpu powerpc
+	    if {$tcl_platform(wordSize) == 8} {
+		append cpu 64
+	    }
+	}
+	hp-ux {
+	    set plat hpux
+	    if {![string match "ia64*" $cpu]} {
+		set cpu parisc
+		if {$tcl_platform(wordSize) == 8} {
+		    append cpu 64
+		}
+	    }
+	}
+	osf1 {
+	    set plat tru64
+	}
+	default {
+	    set plat [lindex [split $plat _-] 0]
+	}
+    }
+
+    return "${plat}-${cpu}"
+}
+
+# -- platform::identify
+#
+# Assembles an identifier for the exact platform, by extending the
+# generic identifier. I.e. it adds in details like kernel version,
+# libc version, etc., if they are relevant for the loading of
+# packages on the platform.
+
+proc ::platform::identify {} {
+    global tcl_platform
+
+    set id [generic]
+    regexp {^([^-]+)-([^-]+)$} $id -> plat cpu
+
+    switch -- $plat {
+	solaris {
+	    regsub {^5} $tcl_platform(osVersion) 2 text
+	    append plat $text
+	    return "${plat}-${cpu}"
+	}
+	macosx {
+	    set major [lindex [split $tcl_platform(osVersion) .] 0]
+	    if {$major > 19} {
+		set minor [lindex [split $tcl_platform(osVersion) .] 1]
+		incr major -9
+		append plat $major.[expr {$minor - 1}]
+	    } else {
+		incr major -4
+		append plat 10.$major
+		return "${plat}-${cpu}"
+	    }
+	    return "${plat}-${cpu}"
+	}
+	linux {
+	    # Look for the libc*.so and determine its version
+	    # (libc5/6, libc6 further glibc 2.X)
+
+	    set v unknown
+
+	    # Determine in which directory to look. /lib, or /lib64.
+	    # For that we use the tcl_platform(wordSize).
+	    #
+	    # We could use the 'cpu' info, per the equivalence below,
+	    # that however would be restricted to intel. And this may
+	    # be a arm, mips, etc. system. The wordsize is more
+	    # fundamental.
+	    #
+	    # ix86   <=> (wordSize == 4) <=> 32 bit ==> /lib
+	    # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64
+	    #
+	    # Do not look into /lib64 even if present, if the cpu
+	    # doesn't fit.
+
+	    # TODO: Determine the prefixes (i386, x86_64, ...) for
+	    # other cpus.  The path after the generic one is utterly
+	    # specific to intel right now.  Ok, on Ubuntu, possibly
+	    # other Debian systems we may apparently be able to query
+	    # the necessary CPU code. If we can't we simply use the
+	    # hardwired fallback.
+
+	    switch -exact -- $tcl_platform(wordSize) {
+		4 {
+		    lappend bases /lib
+		    if {[catch {
+			exec dpkg-architecture -qDEB_HOST_MULTIARCH
+		    } res]} {
+			lappend bases /lib/i386-linux-gnu
+		    } else {
+			# dpkg-arch returns the full tripled, not just cpu.
+			lappend bases /lib/$res
+		    }
+		}
+		8 {
+		    lappend bases /lib64
+		    if {[catch {
+			exec dpkg-architecture -qDEB_HOST_MULTIARCH
+		    } res]} {
+			lappend bases /lib/x86_64-linux-gnu
+		    } else {
+			# dpkg-arch returns the full tripled, not just cpu.
+			lappend bases /lib/$res
+		    }
+		}
+		default {
+		    return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8"
+		}
+	    }
+
+	    foreach base $bases {
+		if {[LibcVersion $base -> v]} break
+	    }
+
+	    append plat -$v
+	    return "${plat}-${cpu}"
+	}
+    }
+
+    return $id
+}
+
+proc ::platform::LibcVersion {base _->_ vv} {
+    upvar 1 $vv v
+    set libclist [lsort [glob -nocomplain -directory $base libc*]]
+
+    if {![llength $libclist]} { return 0 }
+
+    set libc [lindex $libclist 0]
+
+    # Try executing the library first. This should suceed
+    # for a glibc library, and return the version
+    # information.
+
+    if {![catch {
+	set vdata [lindex [split [exec $libc] \n] 0]
+    }]} {
+	regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v
+	foreach {major minor} [split $v .] break
+	set v glibc${major}.${minor}
+	return 1
+    } else {
+	# We had trouble executing the library. We are now
+	# inspecting its name to determine the version
+	# number. This code by Larry McVoy.
+
+	if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
+	    set v glibc${major}.${minor}
+	    return 1
+	}
+    }
+    return 0
+}
+
+# -- platform::patterns
+#
+# Given an exact platform identifier, i.e. _not_ the generic
+# identifier it assembles a list of exact platform identifier
+# describing platform which should be compatible with the
+# input.
+#
+# I.e. packages for all platforms in the result list should be
+# loadable on the specified platform.
+
+# << Should we add the generic identifier to the list as well ? In
+#    general it is not compatible I believe. So better not. In many
+#    cases the exact identifier is identical to the generic one
+#    anyway.
+# >>
+
+proc ::platform::patterns {id} {
+    set res [list $id]
+    if {$id eq "tcl"} {return $res}
+
+    switch -glob --  $id {
+	solaris*-* {
+	    if {[regexp {solaris([^-]*)-(.*)} $id -> v cpu]} {
+		if {$v eq ""} {return $id}
+		foreach {major minor} [split $v .] break
+		incr minor -1
+		for {set j $minor} {$j >= 6} {incr j -1} {
+		    lappend res solaris${major}.${j}-${cpu}
+		}
+	    }
+	}
+	linux*-* {
+	    if {[regexp {linux-glibc([^-]*)-(.*)} $id -> v cpu]} {
+		foreach {major minor} [split $v .] break
+		incr minor -1
+		for {set j $minor} {$j >= 0} {incr j -1} {
+		    lappend res linux-glibc${major}.${j}-${cpu}
+		}
+	    }
+	}
+	macosx-powerpc {
+	    lappend res macosx-universal
+	}
+	macosx-x86_64 {
+	    lappend res macosx-i386-x86_64
+	}
+	macosx-ix86 {
+	    lappend res macosx-universal macosx-i386-x86_64
+	}
+	macosx*-*    {
+	    # 10.5+,11.0+
+	    if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} {
+
+		switch -exact -- $cpu {
+		    ix86    {
+			lappend alt i386-x86_64
+			lappend alt universal
+		    }
+		    x86_64  {
+			if {[lindex [split $::tcl_platform(osVersion) .] 0] < 19} {
+			    set alt i386-x86_64
+			} else {
+			    set alt {}
+			}
+		    }
+		    arm  {
+			lappend alt x86_64
+		    }
+		    default { set alt {} }
+		}
+
+		if {$v ne ""} {
+		    foreach {major minor} [split $v .] break
+
+		    set res {}
+		    if {$major eq 12} {
+			# Add 12.0 to 12.minor to patterns.
+			for {set j $minor} {$j >= 0} {incr j -1} {
+			    lappend res macosx${major}.${j}-${cpu}
+			    foreach a $alt {
+				lappend res macosx${major}.${j}-$a
+			    }
+			}
+			set major 11
+			set minor 5
+		    }
+		    if {$major eq 11} {
+			# Add 11.0 to 11.minor to patterns.
+			for {set j $minor} {$j >= 0} {incr j -1} {
+			    lappend res macosx${major}.${j}-${cpu}
+			    foreach a $alt {
+				lappend res macosx${major}.${j}-$a
+			    }
+			}
+			set major 10
+			set minor 15
+		    }
+		    # Add 10.5 to 10.minor to patterns.
+		    for {set j $minor} {$j >= 5} {incr j -1} {
+			if {$cpu ne "arm"} {
+			    lappend res macosx${major}.${j}-${cpu}
+			}
+			foreach a $alt {
+			    lappend res macosx${major}.${j}-$a
+			}
+		    }
+
+		    # Add unversioned patterns for 10.3/10.4 builds.
+		    lappend res macosx-${cpu}
+		    foreach a $alt {
+			lappend res macosx-$a
+		    }
+		} else {
+		    # No version, just do unversioned patterns.
+		    foreach a $alt {
+			lappend res macosx-$a
+		    }
+		}
+	    } else {
+		# no v, no cpu ... nothing
+	    }
+	}
+    }
+    lappend res tcl ; # Pure tcl packages are always compatible.
+    return $res
+}
+
+
+# ### ### ### ######### ######### #########
+## Ready
+
+package provide platform 1.0.18
+
+# ### ### ### ######### ######### #########
+## Demo application
+
+if {[info exists argv0] && ($argv0 eq [info script])} {
+    puts ====================================
+    parray tcl_platform
+    puts ====================================
+    puts Generic\ identification:\ [::platform::generic]
+    puts Exact\ identification:\ \ \ [::platform::identify]
+    puts ====================================
+    puts Search\ patterns:
+    puts *\ [join [::platform::patterns [::platform::identify]] \n*\ ]
+    puts ====================================
+    exit 0
+}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.3.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.3.tm	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.3.tm	2022-03-14 10:03:11 UTC (rev 62700)
@@ -642,7 +642,7 @@
 
     proc IsVerbose {level} {
 	variable Option
-	return [expr {[lsearch -exact $Option(-verbose) $level] >= 0}]
+	return [expr {$level in $Option(-verbose)}]
     }
 
     # Default verbosity is to show bodies of failed tests

Deleted: trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.2.tm	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,715 +0,0 @@
-# tdbcsqlite3.tcl --
-#
-#    SQLite3 database driver for TDBC
-#
-# Copyright (c) 2008 by Kevin B. Kenny.
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: tdbcodbc.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
-#
-#------------------------------------------------------------------------------
-
-package require tdbc
-package require sqlite3
-
-package provide tdbc::sqlite3 1.1.2
-
-namespace eval tdbc::sqlite3 {
-    namespace export connection
-}
-
-#------------------------------------------------------------------------------
-#
-# tdbc::sqlite3::connection --
-#
-#	Class representing a SQLite3 database connection
-#
-#------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::sqlite3::connection {
-
-    superclass ::tdbc::connection
-
-    variable timeout
-
-    # The constructor accepts a database name and opens the database.
-
-    constructor {databaseName args} {
-	set timeout 0
-	if {[llength $args] % 2 != 0} {
-	    set cmd [lrange [info level 0] 0 end-[llength $args]]
-	    return -code error \
-		-errorcode {TDBC GENERAL_ERROR HY000 SQLITE3 WRONGNUMARGS} \
-		"wrong # args, should be \"$cmd ?-option value?...\""
-	}
-	next
-	sqlite3 [namespace current]::db $databaseName
-	if {[llength $args] > 0} {
-	    my configure {*}$args
-	}
-	db nullvalue \ufffd
-    }
-
-    # The 'statementCreate' method forwards to the constructor of the
-    # statement class
-
-    forward statementCreate ::tdbc::sqlite3::statement create
-
-    # The 'configure' method queries and sets options to the database
-
-    method configure args {
-	if {[llength $args] == 0} {
-
-	    # Query all configuration options
-
-	    set result {-encoding utf-8}
-	    lappend result -isolation
-	    if {[db onecolumn {PRAGMA read_uncommitted}]} {
-		lappend result readuncommitted
-	    } else {
-		lappend result serializable
-	    }
-	    lappend result -readonly 0
-	    lappend result -timeout $timeout
-	    return $result
-
-	} elseif {[llength $args] == 1} {
-
-	    # Query a single option
-
-	    set option [lindex $args 0]
-	    switch -exact -- $option {
-		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
-		-encoding {
-		    return utf-8
-		}
-		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
-		-isolatio - -isolation {
-		    if {[db onecolumn {PRAGMA read_uncommitted}]} {
-			return readuncommitted
-		    } else {
-			return serializable
-		    }
-		}
-		-r - -re - -rea - -read - -reado - -readon - -readonl -
-		-readonly {
-		    return 0
-		}
-		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
-		    return $timeout
-		}
-		default {
-		    return -code error \
-			-errorcode [list TDBC GENERAL_ERROR HY000 SQLITE3 \
-					BADOPTION $option] \
-			"bad option \"$option\": must be\
-                         -encoding, -isolation, -readonly or -timeout"
-
-		}
-	    }
-
-	} elseif {[llength $args] % 2 != 0} {
-
-	    # Syntax error
-
-	    set cmd [lrange [info level 0] 0 end-[llength $args]]
-	    return -code error \
-		-errorcode [list TDBC GENERAL_ERROR HY000 \
-				SQLITE3 WRONGNUMARGS] \
-		"wrong # args, should be \" $cmd ?-option value?...\""
-	}
-
-	# Set one or more options
-
-	foreach {option value} $args {
-	    switch -exact -- $option {
-		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
-		-encoding {
-		    if {$value ne {utf-8}} {
-			return -code error \
-			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
-					    SQLITE3 ENCODING] \
-			    "-encoding not supported. SQLite3 is always \
-                             Unicode."
-		    }
-		}
-		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
-		-isolatio - -isolation {
-		    switch -exact -- $value {
-			readu - readun - readunc - readunco - readuncom -
-			readuncomm - readuncommi - readuncommit -
-			readuncommitt - readuncommitte - readuncommitted {
-			    db eval {PRAGMA read_uncommitted = 1}
-			}
-			readc - readco - readcom - readcomm - readcommi -
-			readcommit - readcommitt - readcommitte -
-			readcommitted -
-			rep - repe - repea - repeat - repeata - repeatab -
-			repeatabl - repeatable - repeatabler - repeatablere -
-			repeatablerea - repeatablread -
-			s - se - ser - seri - seria - serial - seriali -
-			serializ - serializa - serializab - serializabl -
-			serializable -
-			reado - readon - readonl - readonly {
-			    db eval {PRAGMA read_uncommitted = 0}
-			}
-			default {
-			    return -code error \
-				-errorcode [list TDBC GENERAL_ERROR HY000 \
-						SQLITE3 BADISOLATION $value] \
-				"bad isolation level \"$value\":\
-                                should be readuncommitted, readcommitted,\
-                                repeatableread, serializable, or readonly"
-			}
-		    }
-		}
-		-r - -re - -rea - -read - -reado - -readon - -readonl -
-		-readonly {
-		    if {$value} {
-			return -code error \
-			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
-					    SQLITE3 READONLY] \
-			    "SQLite3's Tcl API does not support read-only\
-                             access"
-		    }
-		}
-		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
-		    if {![string is integer $value]} {
-			return -code error \
-			    -errorcode [list TDBC DATA_EXCEPTION 22018 \
-					    SQLITE3 $value] \
-			    "expected integer but got \"$value\""
-		    }
-		    db timeout $value
-		    set timeout $value
-		}
-		default {
-		    return -code error \
-			-errorcode [list TDBC GENERAL_ERROR HY000 \
-					SQLITE3 BADOPTION $value] \
-			"bad option \"$option\": must be\
-                         -encoding, -isolation, -readonly or -timeout"
-
-		}
-	    }
-	}
-	return
-    }
-
-    # The 'tables' method introspects on the tables in the database.
-
-    method tables {{pattern %}} {
-	set retval {}
-	my foreach row {
-	    SELECT * from sqlite_master
-	    WHERE type IN ('table', 'view')
-	    AND name LIKE :pattern
-	} {
-	    dict set row name [string tolower [dict get $row name]]
-	    dict set retval [dict get $row name] $row
-	}
-	return $retval
-    }
-
-    # The 'columns' method introspects on columns of a table.
-
-    method columns {table {pattern %}} {
-	regsub -all ' $table '' table
-	set retval {}
-	set pattern [string map [list \
-				     * {[*]} \
-				     ? {[?]} \
-				     \[ \\\[ \
-				     \] \\\[ \
-				     _ ? \
-				     % *] [string tolower $pattern]]
-	my foreach origrow "PRAGMA table_info('$table')" {
-	    set row {}
-	    dict for {key value} $origrow {
-		dict set row [string tolower $key] $value
-	    }
-	    dict set row name [string tolower [dict get $row name]]
-	    if {![string match $pattern [dict get $row name]]} {
-		continue
-	    }
-	    switch -regexp -matchvar info [dict get $row type] {
-		{^(.+)\(\s*([[:digit:]]+)\s*,\s*([[:digit:]]+)\s*\)\s*$} {
-		    dict set row type [string tolower [lindex $info 1]]
-		    dict set row precision [lindex $info 2]
-		    dict set row scale [lindex $info 3]
-		}
-		{^(.+)\(\s*([[:digit:]]+)\s*\)\s*$} {
-		    dict set row type [string tolower [lindex $info 1]]
-		    dict set row precision [lindex $info 2]
-		    dict set row scale 0
-		}
-		default {
-		    dict set row type [string tolower [dict get $row type]]
-		    dict set row precision 0
-		    dict set row scale 0
-		}
-	    }
-	    dict set row nullable [expr {![dict get $row notnull]}]
-	    dict set retval [dict get $row name] $row
-	}
-	return $retval
-    }
-
-    # The 'primarykeys' method enumerates the primary keys on a table.
-
-    method primarykeys {table} {
-	set result {}
-	my foreach row "PRAGMA table_info($table)" {
-	    if {[dict get $row pk]} {
-		lappend result [dict create ordinalPosition \
-				    [expr {[dict get $row cid]+1}] \
-				    columnName \
-				    [dict get $row name]]
-	    }
-	}
-	return $result
-    }
-
-    # The 'foreignkeys' method enumerates the foreign keys that are
-    # declared in a table or that refer to a given table.
-
-    method foreignkeys {args} {
-
-	variable ::tdbc::generalError
-
-	# Check arguments
-
-	set argdict {}
-	if {[llength $args] % 2 != 0} {
-	    set errorcode $generalError
-	    lappend errorcode wrongNumArgs
-	    return -code error -errorcode $errorcode \
-		"wrong # args: should be [lrange [info level 0] 0 1]\
-                 ?-option value?..."
-	}
-	foreach {key value} $args {
-	    if {$key ni {-primary -foreign}} {
-		set errorcode $generalError
-		lappend errorcode badOption
-		return -code error -errorcode $errorcode \
-		    "bad option \"$key\", must be -primary or -foreign"
-	    }
-	    set key [string range $key 1 end]
-	    if {[dict exists $argdict $key]} {
-		set errorcode $generalError
-		lappend errorcode dupOption
-		return -code error -errorcode $errorcode \
-		    "duplicate option \"$key\" supplied"
-	    }
-	    dict set argdict $key $value
-	}
-
-	# If we know the table with the foreign key, search just its
-	# foreign keys. Otherwise, iterate over all the tables in the
-	# database.
-
-	if {[dict exists $argdict foreign]} {
-	    return [my ForeignKeysForTable [dict get $argdict foreign] \
-			$argdict]
-	} else {
-	    set result {}
-	    foreach foreignTable [dict keys [my tables]] {
-		lappend result {*}[my ForeignKeysForTable \
-				       $foreignTable $argdict]
-	    }
-	    return $result
-	}
-
-    }
-
-    # The private ForeignKeysForTable method enumerates the foreign keys
-    # in a specific table.
-    #
-    # Parameters:
-    #
-    #	foreignTable - Name of the table containing foreign keys.
-    #   argdict - Dictionary that may or may not contain a key,
-    #             'primary', whose value is the name of a table that
-    #             must hold the primary key corresponding to the foreign
-    #             key. If the 'primary' key is absent, all tables are
-    #             candidates.
-    # Results:
-    #
-    # 	Returns the list of foreign keys that meed the specified
-    # 	conditions, as a list of dictionaries, each containing the
-    # 	keys, foreignConstraintName, foreignTable, foreignColumn,
-    # 	primaryTable, primaryColumn, and ordinalPosition.  Note that the
-    #   foreign constraint name is constructed arbitrarily, since SQLite3
-    #   does not report this information.
-
-    method ForeignKeysForTable {foreignTable argdict} {
-
-	set result {}
-	set n 0
-
-	# Go through the foreign keys in the given table, looking for
-	# ones that refer to the primary table (if one is given), or
-	# for any primary keys if none is given.
-	my foreach row "PRAGMA foreign_key_list($foreignTable)" {
-	    if {(![dict exists $argdict primary])
-		|| ([string tolower [dict get $row table]]
-		    eq [dict get $argdict primary])} {
-
-		# Construct a dictionary for each key, translating
-		# SQLite names to TDBC ones and converting sequence
-		# numbers to 1-based indexing.
-
-		set rrow [dict create foreignTable $foreignTable \
-			      foreignConstraintName \
-			      ?$foreignTable?[dict get $row id]]
-		if {[dict exists $row seq]} {
-		    dict set rrow ordinalPosition \
-			[expr {1 + [dict get $row seq]}]
-		}
-		foreach {to from} {
-		    foreignColumn from
-		    primaryTable table
-		    primaryColumn to
-		    deleteAction on_delete
-		    updateAction on_update
-		} {
-		    if {[dict exists $row $from]} {
-			dict set rrow $to [dict get $row $from]
-		    }
-		}
-
-		# Add the newly-constucted dictionary to the result list
-
-		lappend result $rrow
-	    }
-	}
-
-	return $result
-    }
-
-    # The 'preparecall' method prepares a call to a stored procedure.
-    # SQLite3 does not have stored procedures, since it's an in-process
-    # server.
-
-    method preparecall {call} {
-	return -code error \
-	    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
-			    SQLITE3 PREPARECALL] \
-	    {SQLite3 does not support stored procedures}
-    }
-
-    # The 'begintransaction' method launches a database transaction
-
-    method begintransaction {} {
-	db eval {BEGIN TRANSACTION}
-    }
-
-    # The 'commit' method commits a database transaction
-
-    method commit {} {
-	db eval {COMMIT}
-    }
-
-    # The 'rollback' method abandons a database transaction
-
-    method rollback {} {
-	db eval {ROLLBACK}
-    }
-
-    # The 'transaction' method executes a script as a single transaction.
-    # We override the 'transaction' method of the base class, since SQLite3
-    # has a faster implementation of the same thing. (The base class's generic
-    # method should also work.)
-    # (Don't overload the base class method, because 'break', 'continue'
-    # and 'return' in the transaction body don't work!)
-
-    #method transaction {script} {
-    #	uplevel 1 [list {*}[namespace code db] transaction $script]
-    #}
-
-    method prepare {sqlCode} {
-	set result [next $sqlCode]
-	return $result
-    }
-
-    method getDBhandle {} {
-	return [namespace which db]
-    }
-}
-
-#------------------------------------------------------------------------------
-#
-# tdbc::sqlite3::statement --
-#
-#	Class representing a statement to execute against a SQLite3 database
-#
-#------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::sqlite3::statement {
-
-    superclass ::tdbc::statement
-
-    variable Params db sql
-
-    # The constructor accepts the handle to the connection and the SQL
-    # code for the statement to prepare.  All that it does is to parse the
-    # statement and store it.  The parse is used to support the
-    # 'params' and 'paramtype' methods.
-
-    constructor {connection sqlcode} {
-	next
-	set Params {}
-	set db [$connection getDBhandle]
-	set sql $sqlcode
-	foreach token [::tdbc::tokenize $sqlcode] {
-	    if {[string index $token 0] in {$ : @}} {
-		dict set Params [string range $token 1 end] \
-		    {type Tcl_Obj precision 0 scale 0 nullable 1 direction in}
-	    }
-	}
-    }
-
-    # The 'resultSetCreate' method relays to the result set constructor
-
-    forward resultSetCreate ::tdbc::sqlite3::resultset create
-
-    # The 'params' method returns descriptions of the parameters accepted
-    # by the statement
-
-    method params {} {
-	return $Params
-    }
-
-    # The 'paramtype' method need do nothing; Sqlite3 uses manifest typing.
-
-    method paramtype args {;}
-
-    method getDBhandle {} {
-	return $db
-    }
-
-    method getSql {} {
-	return $sql
-    }
-
-}
-
-#-------------------------------------------------------------------------------
-#
-# tdbc::sqlite3::resultset --
-#
-#	Class that represents a SQLlite result set in Tcl
-#
-#-------------------------------------------------------------------------------
-
-::oo::class create ::tdbc::sqlite3::resultset {
-
-    superclass ::tdbc::resultset
-
-    # The variables of this class all have peculiar names. The reason is
-    # that the RunQuery method needs to execute with an activation record
-    # that has no local variables whose names could conflict with names
-    # in the SQL query. We start the variable names with hyphens because
-    # they can't be bind variables.
-
-    variable -set {*}{
-	-columns -db -needcolumns -resultArray
-	-results -sql -Cursor -RowCount -END
-    }
-
-    constructor {statement args} {
-	next
-	set -db [$statement getDBhandle]
-	set -sql [$statement getSql]
-	set -columns {}
-	set -results {}
-	${-db} trace [namespace code {my RecordStatement}]
-	if {[llength $args] == 0} {
-
-	    # Variable substitutions are evaluated in caller's context
-
-	    uplevel 1 [list ${-db} eval ${-sql} \
-			   [namespace which -variable -resultArray] \
-			   [namespace code {my RecordResult}]]
-
-	} elseif {[llength $args] == 1} {
-
-	    # Variable substitutions are in the dictionary at [lindex $args 0].
-
-	    set -paramDict [lindex $args 0]
-
-	    # At this point, the activation record must contain no variables
-	    # that might be bound within the query.  All variables at this point
-	    # begin with hyphens so that they are syntactically incorrect
-	    # as bound variables in SQL.
-
-	    unset args
-	    unset statement
-
-	    dict with -paramDict {
-		${-db} eval ${-sql} -resultArray {
-		    my RecordResult
-		}
-	    }
-
-	} else {
-
-	    ${-db} trace {}
-
-	    # Too many args
-
-	    return -code error \
-		-errorcode [list TDBC GENERAL_ERROR HY000 \
-				SQLITE3 WRONGNUMARGS] \
-		"wrong # args: should be\
-                 [lrange [info level 0] 0 1] statement ?dictionary?"
-
-	}
-	${-db} trace {}
-	set -Cursor 0
-	if {${-Cursor} < [llength ${-results}]
-	    && [lindex ${-results} ${-Cursor}] eq {statement}} {
-	    incr -Cursor 2
-	}
-	if {${-Cursor} < [llength ${-results}]
-	    && [lindex ${-results} ${-Cursor}] eq {columns}} {
-	    incr -Cursor
-	    set -columns [lindex ${-results} ${-Cursor}]
-	    incr -Cursor
-	}
-	set -RowCount [${-db} changes]
-    }
-
-    # Record the start of a SQL statement
-
-    method RecordStatement {stmt} {
-	set -needcolumns 1
-	lappend -results statement {}
-    }
-
-    # Record one row of results from a query by appending it as a dictionary
-    # to the 'results' list.  As a side effect, set 'columns' to a list
-    # comprising the names of the columns of the result.
-
-    method RecordResult {} {
-	set columns ${-resultArray(*)}
-	if {[info exists -needcolumns]} {
-	    lappend -results columns $columns
-	    unset -needcolumns
-	}
-	set dict {}
-	foreach key $columns {
-	    if {[set -resultArray($key)] ne "\ufffd"} {
-		dict set dict $key [set -resultArray($key)]
-	    }
-	}
-	lappend -results row $dict
-    }
-
-    # Advance to the next result set
-
-    method nextresults {} {
-	set have 0
-	while {${-Cursor} < [llength ${-results}]} {
-	    if {[lindex ${-results} ${-Cursor}] eq {statement}} {
-		set have 1
-		incr -Cursor 2
-		break
-	    }
-	    incr -Cursor 2
-	}
-	if {!$have} {
-	    set -END {}
-	}
-	if {${-Cursor} >= [llength ${-results}]} {
-	    set -columns {}
-	} elseif {[lindex ${-results} ${-Cursor}] eq {columns}} {
-	    incr -Cursor
-	    set -columns [lindex ${-results} ${-Cursor}]
-	    incr -Cursor
-	} else {
-	    set -columns {}
-	}
-	return $have
-    }
-
-    method getDBhandle {} {
-	return ${-db}
-    }
-
-    # Return a list of the columns
-
-    method columns {} {
-	if {[info exists -END]} {
-	    return -code error \
-		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
-		"Function sequence error: result set is exhausted."
-	}
-	return ${-columns}
-    }
-
-    # Return the next row of the result set as a list
-
-    method nextlist var {
-
-	upvar 1 $var row
-
-	if {[info exists -END]} {
-	    return -code error \
-		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
-		"Function sequence error: result set is exhausted."
-	}
-	if {${-Cursor} >= [llength ${-results}]
-	    || [lindex ${-results} ${-Cursor}] ne {row}} {
-	    return 0
-	} else {
-	    set row {}
-	    incr -Cursor
-	    set d [lindex ${-results} ${-Cursor}]
-	    incr -Cursor
-	    foreach key ${-columns} {
-		if {[dict exists $d $key]} {
-		    lappend row [dict get $d $key]
-		} else {
-		    lappend row {}
-		}
-	    }
-	}
-	return 1
-    }
-
-    # Return the next row of the result set as a dict
-
-    method nextdict var {
-
-	upvar 1 $var row
-
-	if {[info exists -END]} {
-	    return -code error \
-		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
-		"Function sequence error: result set is exhausted."
-	}
-	if {${-Cursor} >= [llength ${-results}]
-	    || [lindex ${-results} ${-Cursor}] ne {row}} {
-	    return 0
-	} else {
-	    incr -Cursor
-	    set row [lindex ${-results} ${-Cursor}]
-	    incr -Cursor
-	}
-	return 1
-    }
-
-    # Return the number of rows affected by a statement
-
-    method rowcount {} {
-	if {[info exists -END]} {
-	    return -code error \
-		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
-		"Function sequence error: result set is exhausted."
-	}
-	return ${-RowCount}
-    }
-
-}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.3.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.3.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.3.tm	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,715 @@
+# tdbcsqlite3.tcl --
+#
+#    SQLite3 database driver for TDBC
+#
+# Copyright (c) 2008 by Kevin B. Kenny.
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tdbcodbc.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
+#
+#------------------------------------------------------------------------------
+
+package require tdbc
+package require sqlite3
+
+package provide tdbc::sqlite3 1.1.3
+
+namespace eval tdbc::sqlite3 {
+    namespace export connection
+}
+
+#------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::connection --
+#
+#	Class representing a SQLite3 database connection
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::connection {
+
+    superclass ::tdbc::connection
+
+    variable timeout
+
+    # The constructor accepts a database name and opens the database.
+
+    constructor {databaseName args} {
+	set timeout 0
+	if {[llength $args] % 2 != 0} {
+	    set cmd [lrange [info level 0] 0 end-[llength $args]]
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY000 SQLITE3 WRONGNUMARGS} \
+		"wrong # args, should be \"$cmd ?-option value?...\""
+	}
+	next
+	sqlite3 [namespace current]::db $databaseName
+	if {[llength $args] > 0} {
+	    my configure {*}$args
+	}
+	db nullvalue \ufffd
+    }
+
+    # The 'statementCreate' method forwards to the constructor of the
+    # statement class
+
+    forward statementCreate ::tdbc::sqlite3::statement create
+
+    # The 'configure' method queries and sets options to the database
+
+    method configure args {
+	if {[llength $args] == 0} {
+
+	    # Query all configuration options
+
+	    set result {-encoding utf-8}
+	    lappend result -isolation
+	    if {[db onecolumn {PRAGMA read_uncommitted}]} {
+		lappend result readuncommitted
+	    } else {
+		lappend result serializable
+	    }
+	    lappend result -readonly 0
+	    lappend result -timeout $timeout
+	    return $result
+
+	} elseif {[llength $args] == 1} {
+
+	    # Query a single option
+
+	    set option [lindex $args 0]
+	    switch -exact -- $option {
+		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
+		-encoding {
+		    return utf-8
+		}
+		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
+		-isolatio - -isolation {
+		    if {[db onecolumn {PRAGMA read_uncommitted}]} {
+			return readuncommitted
+		    } else {
+			return serializable
+		    }
+		}
+		-r - -re - -rea - -read - -reado - -readon - -readonl -
+		-readonly {
+		    return 0
+		}
+		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
+		    return $timeout
+		}
+		default {
+		    return -code error \
+			-errorcode [list TDBC GENERAL_ERROR HY000 SQLITE3 \
+					BADOPTION $option] \
+			"bad option \"$option\": must be\
+                         -encoding, -isolation, -readonly or -timeout"
+
+		}
+	    }
+
+	} elseif {[llength $args] % 2 != 0} {
+
+	    # Syntax error
+
+	    set cmd [lrange [info level 0] 0 end-[llength $args]]
+	    return -code error \
+		-errorcode [list TDBC GENERAL_ERROR HY000 \
+				SQLITE3 WRONGNUMARGS] \
+		"wrong # args, should be \" $cmd ?-option value?...\""
+	}
+
+	# Set one or more options
+
+	foreach {option value} $args {
+	    switch -exact -- $option {
+		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
+		-encoding {
+		    if {$value ne {utf-8}} {
+			return -code error \
+			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+					    SQLITE3 ENCODING] \
+			    "-encoding not supported. SQLite3 is always \
+                             Unicode."
+		    }
+		}
+		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
+		-isolatio - -isolation {
+		    switch -exact -- $value {
+			readu - readun - readunc - readunco - readuncom -
+			readuncomm - readuncommi - readuncommit -
+			readuncommitt - readuncommitte - readuncommitted {
+			    db eval {PRAGMA read_uncommitted = 1}
+			}
+			readc - readco - readcom - readcomm - readcommi -
+			readcommit - readcommitt - readcommitte -
+			readcommitted -
+			rep - repe - repea - repeat - repeata - repeatab -
+			repeatabl - repeatable - repeatabler - repeatablere -
+			repeatablerea - repeatablread -
+			s - se - ser - seri - seria - serial - seriali -
+			serializ - serializa - serializab - serializabl -
+			serializable -
+			reado - readon - readonl - readonly {
+			    db eval {PRAGMA read_uncommitted = 0}
+			}
+			default {
+			    return -code error \
+				-errorcode [list TDBC GENERAL_ERROR HY000 \
+						SQLITE3 BADISOLATION $value] \
+				"bad isolation level \"$value\":\
+                                should be readuncommitted, readcommitted,\
+                                repeatableread, serializable, or readonly"
+			}
+		    }
+		}
+		-r - -re - -rea - -read - -reado - -readon - -readonl -
+		-readonly {
+		    if {$value} {
+			return -code error \
+			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+					    SQLITE3 READONLY] \
+			    "SQLite3's Tcl API does not support read-only\
+                             access"
+		    }
+		}
+		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
+		    if {![string is integer $value]} {
+			return -code error \
+			    -errorcode [list TDBC DATA_EXCEPTION 22018 \
+					    SQLITE3 $value] \
+			    "expected integer but got \"$value\""
+		    }
+		    db timeout $value
+		    set timeout $value
+		}
+		default {
+		    return -code error \
+			-errorcode [list TDBC GENERAL_ERROR HY000 \
+					SQLITE3 BADOPTION $value] \
+			"bad option \"$option\": must be\
+                         -encoding, -isolation, -readonly or -timeout"
+
+		}
+	    }
+	}
+	return
+    }
+
+    # The 'tables' method introspects on the tables in the database.
+
+    method tables {{pattern %}} {
+	set retval {}
+	my foreach row {
+	    SELECT * from sqlite_master
+	    WHERE type IN ('table', 'view')
+	    AND name LIKE :pattern
+	} {
+	    dict set row name [string tolower [dict get $row name]]
+	    dict set retval [dict get $row name] $row
+	}
+	return $retval
+    }
+
+    # The 'columns' method introspects on columns of a table.
+
+    method columns {table {pattern %}} {
+	regsub -all ' $table '' table
+	set retval {}
+	set pattern [string map [list \
+				     * {[*]} \
+				     ? {[?]} \
+				     \[ \\\[ \
+				     \] \\\[ \
+				     _ ? \
+				     % *] [string tolower $pattern]]
+	my foreach origrow "PRAGMA table_info('$table')" {
+	    set row {}
+	    dict for {key value} $origrow {
+		dict set row [string tolower $key] $value
+	    }
+	    dict set row name [string tolower [dict get $row name]]
+	    if {![string match $pattern [dict get $row name]]} {
+		continue
+	    }
+	    switch -regexp -matchvar info [dict get $row type] {
+		{^(.+)\(\s*([[:digit:]]+)\s*,\s*([[:digit:]]+)\s*\)\s*$} {
+		    dict set row type [string tolower [lindex $info 1]]
+		    dict set row precision [lindex $info 2]
+		    dict set row scale [lindex $info 3]
+		}
+		{^(.+)\(\s*([[:digit:]]+)\s*\)\s*$} {
+		    dict set row type [string tolower [lindex $info 1]]
+		    dict set row precision [lindex $info 2]
+		    dict set row scale 0
+		}
+		default {
+		    dict set row type [string tolower [dict get $row type]]
+		    dict set row precision 0
+		    dict set row scale 0
+		}
+	    }
+	    dict set row nullable [expr {![dict get $row notnull]}]
+	    dict set retval [dict get $row name] $row
+	}
+	return $retval
+    }
+
+    # The 'primarykeys' method enumerates the primary keys on a table.
+
+    method primarykeys {table} {
+	set result {}
+	my foreach row "PRAGMA table_info($table)" {
+	    if {[dict get $row pk]} {
+		lappend result [dict create ordinalPosition \
+				    [expr {[dict get $row cid]+1}] \
+				    columnName \
+				    [dict get $row name]]
+	    }
+	}
+	return $result
+    }
+
+    # The 'foreignkeys' method enumerates the foreign keys that are
+    # declared in a table or that refer to a given table.
+
+    method foreignkeys {args} {
+
+	variable ::tdbc::generalError
+
+	# Check arguments
+
+	set argdict {}
+	if {[llength $args] % 2 != 0} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?..."
+	}
+	foreach {key value} $args {
+	    if {$key ni {-primary -foreign}} {
+		set errorcode $generalError
+		lappend errorcode badOption
+		return -code error -errorcode $errorcode \
+		    "bad option \"$key\", must be -primary or -foreign"
+	    }
+	    set key [string range $key 1 end]
+	    if {[dict exists $argdict $key]} {
+		set errorcode $generalError
+		lappend errorcode dupOption
+		return -code error -errorcode $errorcode \
+		    "duplicate option \"$key\" supplied"
+	    }
+	    dict set argdict $key $value
+	}
+
+	# If we know the table with the foreign key, search just its
+	# foreign keys. Otherwise, iterate over all the tables in the
+	# database.
+
+	if {[dict exists $argdict foreign]} {
+	    return [my ForeignKeysForTable [dict get $argdict foreign] \
+			$argdict]
+	} else {
+	    set result {}
+	    foreach foreignTable [dict keys [my tables]] {
+		lappend result {*}[my ForeignKeysForTable \
+				       $foreignTable $argdict]
+	    }
+	    return $result
+	}
+
+    }
+
+    # The private ForeignKeysForTable method enumerates the foreign keys
+    # in a specific table.
+    #
+    # Parameters:
+    #
+    #	foreignTable - Name of the table containing foreign keys.
+    #   argdict - Dictionary that may or may not contain a key,
+    #             'primary', whose value is the name of a table that
+    #             must hold the primary key corresponding to the foreign
+    #             key. If the 'primary' key is absent, all tables are
+    #             candidates.
+    # Results:
+    #
+    # 	Returns the list of foreign keys that meed the specified
+    # 	conditions, as a list of dictionaries, each containing the
+    # 	keys, foreignConstraintName, foreignTable, foreignColumn,
+    # 	primaryTable, primaryColumn, and ordinalPosition.  Note that the
+    #   foreign constraint name is constructed arbitrarily, since SQLite3
+    #   does not report this information.
+
+    method ForeignKeysForTable {foreignTable argdict} {
+
+	set result {}
+	set n 0
+
+	# Go through the foreign keys in the given table, looking for
+	# ones that refer to the primary table (if one is given), or
+	# for any primary keys if none is given.
+	my foreach row "PRAGMA foreign_key_list($foreignTable)" {
+	    if {(![dict exists $argdict primary])
+		|| ([string tolower [dict get $row table]]
+		    eq [dict get $argdict primary])} {
+
+		# Construct a dictionary for each key, translating
+		# SQLite names to TDBC ones and converting sequence
+		# numbers to 1-based indexing.
+
+		set rrow [dict create foreignTable $foreignTable \
+			      foreignConstraintName \
+			      ?$foreignTable?[dict get $row id]]
+		if {[dict exists $row seq]} {
+		    dict set rrow ordinalPosition \
+			[expr {1 + [dict get $row seq]}]
+		}
+		foreach {to from} {
+		    foreignColumn from
+		    primaryTable table
+		    primaryColumn to
+		    deleteAction on_delete
+		    updateAction on_update
+		} {
+		    if {[dict exists $row $from]} {
+			dict set rrow $to [dict get $row $from]
+		    }
+		}
+
+		# Add the newly-constucted dictionary to the result list
+
+		lappend result $rrow
+	    }
+	}
+
+	return $result
+    }
+
+    # The 'preparecall' method prepares a call to a stored procedure.
+    # SQLite3 does not have stored procedures, since it's an in-process
+    # server.
+
+    method preparecall {call} {
+	return -code error \
+	    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+			    SQLITE3 PREPARECALL] \
+	    {SQLite3 does not support stored procedures}
+    }
+
+    # The 'begintransaction' method launches a database transaction
+
+    method begintransaction {} {
+	db eval {BEGIN TRANSACTION}
+    }
+
+    # The 'commit' method commits a database transaction
+
+    method commit {} {
+	db eval {COMMIT}
+    }
+
+    # The 'rollback' method abandons a database transaction
+
+    method rollback {} {
+	db eval {ROLLBACK}
+    }
+
+    # The 'transaction' method executes a script as a single transaction.
+    # We override the 'transaction' method of the base class, since SQLite3
+    # has a faster implementation of the same thing. (The base class's generic
+    # method should also work.)
+    # (Don't overload the base class method, because 'break', 'continue'
+    # and 'return' in the transaction body don't work!)
+
+    #method transaction {script} {
+    #	uplevel 1 [list {*}[namespace code db] transaction $script]
+    #}
+
+    method prepare {sqlCode} {
+	set result [next $sqlCode]
+	return $result
+    }
+
+    method getDBhandle {} {
+	return [namespace which db]
+    }
+}
+
+#------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::statement --
+#
+#	Class representing a statement to execute against a SQLite3 database
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::statement {
+
+    superclass ::tdbc::statement
+
+    variable Params db sql
+
+    # The constructor accepts the handle to the connection and the SQL
+    # code for the statement to prepare.  All that it does is to parse the
+    # statement and store it.  The parse is used to support the
+    # 'params' and 'paramtype' methods.
+
+    constructor {connection sqlcode} {
+	next
+	set Params {}
+	set db [$connection getDBhandle]
+	set sql $sqlcode
+	foreach token [::tdbc::tokenize $sqlcode] {
+	    if {[string index $token 0] in {$ : @}} {
+		dict set Params [string range $token 1 end] \
+		    {type Tcl_Obj precision 0 scale 0 nullable 1 direction in}
+	    }
+	}
+    }
+
+    # The 'resultSetCreate' method relays to the result set constructor
+
+    forward resultSetCreate ::tdbc::sqlite3::resultset create
+
+    # The 'params' method returns descriptions of the parameters accepted
+    # by the statement
+
+    method params {} {
+	return $Params
+    }
+
+    # The 'paramtype' method need do nothing; Sqlite3 uses manifest typing.
+
+    method paramtype args {;}
+
+    method getDBhandle {} {
+	return $db
+    }
+
+    method getSql {} {
+	return $sql
+    }
+
+}
+
+#-------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::resultset --
+#
+#	Class that represents a SQLlite result set in Tcl
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::resultset {
+
+    superclass ::tdbc::resultset
+
+    # The variables of this class all have peculiar names. The reason is
+    # that the RunQuery method needs to execute with an activation record
+    # that has no local variables whose names could conflict with names
+    # in the SQL query. We start the variable names with hyphens because
+    # they can't be bind variables.
+
+    variable -set {*}{
+	-columns -db -needcolumns -resultArray
+	-results -sql -Cursor -RowCount -END
+    }
+
+    constructor {statement args} {
+	next
+	set -db [$statement getDBhandle]
+	set -sql [$statement getSql]
+	set -columns {}
+	set -results {}
+	${-db} trace [namespace code {my RecordStatement}]
+	if {[llength $args] == 0} {
+
+	    # Variable substitutions are evaluated in caller's context
+
+	    uplevel 1 [list ${-db} eval ${-sql} \
+			   [namespace which -variable -resultArray] \
+			   [namespace code {my RecordResult}]]
+
+	} elseif {[llength $args] == 1} {
+
+	    # Variable substitutions are in the dictionary at [lindex $args 0].
+
+	    set -paramDict [lindex $args 0]
+
+	    # At this point, the activation record must contain no variables
+	    # that might be bound within the query.  All variables at this point
+	    # begin with hyphens so that they are syntactically incorrect
+	    # as bound variables in SQL.
+
+	    unset args
+	    unset statement
+
+	    dict with -paramDict {
+		${-db} eval ${-sql} -resultArray {
+		    my RecordResult
+		}
+	    }
+
+	} else {
+
+	    ${-db} trace {}
+
+	    # Too many args
+
+	    return -code error \
+		-errorcode [list TDBC GENERAL_ERROR HY000 \
+				SQLITE3 WRONGNUMARGS] \
+		"wrong # args: should be\
+                 [lrange [info level 0] 0 1] statement ?dictionary?"
+
+	}
+	${-db} trace {}
+	set -Cursor 0
+	if {${-Cursor} < [llength ${-results}]
+	    && [lindex ${-results} ${-Cursor}] eq {statement}} {
+	    incr -Cursor 2
+	}
+	if {${-Cursor} < [llength ${-results}]
+	    && [lindex ${-results} ${-Cursor}] eq {columns}} {
+	    incr -Cursor
+	    set -columns [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	}
+	set -RowCount [${-db} changes]
+    }
+
+    # Record the start of a SQL statement
+
+    method RecordStatement {stmt} {
+	set -needcolumns 1
+	lappend -results statement {}
+    }
+
+    # Record one row of results from a query by appending it as a dictionary
+    # to the 'results' list.  As a side effect, set 'columns' to a list
+    # comprising the names of the columns of the result.
+
+    method RecordResult {} {
+	set columns ${-resultArray(*)}
+	if {[info exists -needcolumns]} {
+	    lappend -results columns $columns
+	    unset -needcolumns
+	}
+	set dict {}
+	foreach key $columns {
+	    if {[set -resultArray($key)] ne "\ufffd"} {
+		dict set dict $key [set -resultArray($key)]
+	    }
+	}
+	lappend -results row $dict
+    }
+
+    # Advance to the next result set
+
+    method nextresults {} {
+	set have 0
+	while {${-Cursor} < [llength ${-results}]} {
+	    if {[lindex ${-results} ${-Cursor}] eq {statement}} {
+		set have 1
+		incr -Cursor 2
+		break
+	    }
+	    incr -Cursor 2
+	}
+	if {!$have} {
+	    set -END {}
+	}
+	if {${-Cursor} >= [llength ${-results}]} {
+	    set -columns {}
+	} elseif {[lindex ${-results} ${-Cursor}] eq {columns}} {
+	    incr -Cursor
+	    set -columns [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	} else {
+	    set -columns {}
+	}
+	return $have
+    }
+
+    method getDBhandle {} {
+	return ${-db}
+    }
+
+    # Return a list of the columns
+
+    method columns {} {
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	return ${-columns}
+    }
+
+    # Return the next row of the result set as a list
+
+    method nextlist var {
+
+	upvar 1 $var row
+
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	if {${-Cursor} >= [llength ${-results}]
+	    || [lindex ${-results} ${-Cursor}] ne {row}} {
+	    return 0
+	} else {
+	    set row {}
+	    incr -Cursor
+	    set d [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	    foreach key ${-columns} {
+		if {[dict exists $d $key]} {
+		    lappend row [dict get $d $key]
+		} else {
+		    lappend row {}
+		}
+	    }
+	}
+	return 1
+    }
+
+    # Return the next row of the result set as a dict
+
+    method nextdict var {
+
+	upvar 1 $var row
+
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	if {${-Cursor} >= [llength ${-results}]
+	    || [lindex ${-results} ${-Cursor}] ne {row}} {
+	    return 0
+	} else {
+	    incr -Cursor
+	    set row [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	}
+	return 1
+    }
+
+    # Return the number of rows affected by a statement
+
+    method rowcount {} {
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	return ${-RowCount}
+    }
+
+}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -70,9 +70,9 @@
 	#    gives the end-user ultimate control to work-around any bugs, or
 	#    to customize.
 
-        if {[info exists env($enVarName)]} {
-            lappend dirs $env($enVarName)
-        }
+	if {[info exists env($enVarName)]} {
+	    lappend dirs $env($enVarName)
+	}
 
 	# 2. In the package script directory registered within the
 	#    configuration of the package itself.
@@ -107,11 +107,11 @@
 	# ../../../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]
+	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]
@@ -134,8 +134,8 @@
 	}
 	set seen($norm) {}
 
-        set the_library $i
-        set file [file join $i $initScript]
+	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
@@ -185,7 +185,7 @@
 
 proc auto_mkindex {dir args} {
     if {[interp issafe]} {
-        error "can't generate index within safe interpreter"
+	error "can't generate index within safe interpreter"
     }
 
     set oldDir [pwd]
@@ -240,7 +240,7 @@
 	set f ""
 	set error [catch {
 	    set f [open $file]
-	    fconfigure $f -eofchar \032
+	    fconfigure $f -eofchar "\032 {}"
 	    while {[gets $f line] >= 0} {
 		if {[regexp {^proc[ 	]+([^ 	]*)} $line match procName]} {
 		    set procName [lindex [auto_qualify $procName "::"] 0]
@@ -351,7 +351,7 @@
     set scriptFile $file
 
     set fid [open $file]
-    fconfigure $fid -eofchar \032
+    fconfigure $fid -eofchar "\032 {}"
     set contents [read $fid]
     close $fid
 
@@ -371,7 +371,7 @@
     $parser eval $contents
 
     foreach name $imports {
-        catch {$parser eval [list _%@namespace forget $name]}
+	catch {$parser eval [list _%@namespace forget $name]}
     }
     return $index
 }
@@ -441,9 +441,9 @@
     set ns [namespace qualifiers $name]
     set tail [namespace tail $name]
     if {$ns eq ""} {
-        set fakeName [namespace current]::_%@fake_$tail
+	set fakeName [namespace current]::_%@fake_$tail
     } else {
-        set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
+	set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
     }
     proc $fakeName $arglist $body
 
@@ -452,8 +452,8 @@
     # 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]
+	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.,
@@ -465,11 +465,11 @@
 	# 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
+	set alias [namespace tail $fakeName]
+	$parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
+	$parser alias $alias $fakeName
     } else {
-        $parser alias $name $fakeName
+	$parser alias $name $fakeName
     }
     return
 }
@@ -491,18 +491,18 @@
     variable contextStack
 
     if {![string match ::* $name]} {
-        foreach ns $contextStack {
-            set name "${ns}::$name"
-            if {[string match ::* $name]} {
-                break
-            }
-        }
+	foreach ns $contextStack {
+	    set name "${ns}::$name"
+	    if {[string match ::* $name]} {
+		break
+	    }
+	}
     }
 
     if {[namespace qualifiers $name] eq ""} {
-        set name [namespace tail $name]
+	set name [namespace tail $name]
     } elseif {![string match ::* $name]} {
-        set name "::$name"
+	set name "::$name"
     }
 
     # Earlier, mkindex replaced all $'s with \0.  Now, we have to reverse that
@@ -592,27 +592,27 @@
 
 auto_mkindex_parser::command namespace {op args} {
     switch -- $op {
-        eval {
-            variable parser
-            variable contextStack
+	eval {
+	    variable parser
+	    variable contextStack
 
-            set name [lindex $args 0]
-            set args [lrange $args 1 end]
+	    set name [lindex $args 0]
+	    set args [lrange $args 1 end]
 
-            set contextStack [linsert $contextStack 0 $name]
+	    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"}
-        }
+	    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

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -2988,8 +2988,7 @@
 	set timezone $result
     } elseif {[set result [getenv TZ]] ne {}} {
 	set timezone $result
-    }
-    if {![info exists timezone]} {
+    } else {
         # Cache the time zone only if it was detected by one of the
         # expensive methods.
         if { [info exists CachedSystemTimeZone] } {

Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cns11643.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cns11643.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cns11643.enc	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,1584 @@
+# Encoding file: cns11643, double-byte
+D
+2134 0 93
+21
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E284E364E3F4E854E054E04518251965338536953B64E2A4E874E4951E2
+4E464E8F4EBC4EBE516651E35204529C53B95902590A5B805DDB5E7A5E7F5EF4
+5F505F515F61961D4E3C4E634E624EA351854EC54ECF4ECE4ECC518451865722
+572351E45205529E529D52FD5300533A5C735346535D538653B7620953CC6C15
+53CE57216C3F5E005F0C623762386534653565E04F0E738D4E974EE04F144EF1
+4EE74EF74EE64F1D4F024F054F2256D8518B518C519951E55213520B52A60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+22
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000053225304530353075407531E535F536D538953BA53D0598053F653F753F9
+597E53F4597F5B565724590459185932593059345DDF59755E845B825BF95C14
+5FD55FD45FCF625C625E626462615E815E835F0D5F52625A5FCA5FC7623965EE
+624F65E7672F6B7A6C39673F673C6C376C446C45738C75927676909390926C4B
+6C4C4E214E204E224E684E894E984EF94EEF7F5182784EF84F064F034EFC4EEE
+4F1690994F284F1C4F074F1A4EFA4F17514A962351724F3B51B451B351B20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+23
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F6451E84F675214520F5215521852A84F33534B534F518F5350521C538B
+522153BE52AE53D2541653FF538E540054305405541354155445541956E35735
+57365731573258EE59054E545447593656E756E55741597A574C5986574B5752
+5B865F535C1859985C3D5C78598E59A25990598F5C8059A15E085B925C285C2A
+5C8D5EF55F0E5C8B5C895C925FD35FDA5C935FDB5DE0620F625D625F62676257
+9F505E8D65EB65EA5F7867375FD2673267366B226BCE5FEE6C586C516C770000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+24
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C3C5FFA6C5A5FF76C53706F7072706E6283628C707372B172B26287738F
+627B627A6270793C6288808D808E6272827B65F08D718FB99096909A67454E24
+4E7167554E9C4F454F4A4F394F37674B4F324F426C1A4F444F4B6C6B4F404F35
+4F3151516C6F5150514E6C6D6C87519D6C9C51B551B851EC522352275226521F
+522B522052B452B372C65325533B537473957397739373947392544D75397594
+543A7681793D5444544C5423541A5432544B5421828F54345449545054220000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+25
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000543F5451545A542F8FC956E956F256F356EF56ED56EC56E6574896285744
+573F573C575357564F85575F5743575857574F744F894F8457464F4C573D4F6A
+57425754575558F158F258F0590B9EA656F1593D4F955994598C519E599C51BE
+5235599F5233599B52315989599A530B658853925B8D54875BFE5BFF5BFD5C2B
+54885C845C8E5C9C5465546C5C855DF55E09546F54615E0B54985E925E905F03
+56F75F1E5F6357725FE75FFE5FE65FDC5FCE57805FFC5FDF5FEC5FF657620000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+26
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005FF25FF05FF95945621359BA59CF623B623C628259C159B659BC6278628B
+59B1629E62A5629B629C6299628D6285629D62755C445C475CAE65F65CA05CB5
+5CAF66F5675B5C9F675467525CA267586744674A67615CB66C7F6C916C9E5E14
+6C6E6C7C6C9F6C755F246C566CA26C795F7D6CA15FE56CAA6CA0601970797077
+707E600A7075707B7264601E72BB72BC72C772B972BE72B66011600C7398601C
+6214623D62AD7593768062BE768376C076C162AE62B377F477F562A97ACC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+27
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007ACD7CFA809F80918097809466048286828C65FB8295660B866C66058FB5
+8FBE8FC766F68FC190A990A4678E6792677690A896279626962B963396349629
+4E3D679F4E9D4F934F8A677D67814F6D4F8E4FA04FA24FA14F9F4FA36C1D4F72
+6CEC4F8C51566CD96CB651906CAD6CE76CB751ED51FE522F6CC3523C52345239
+52B952B552BF53556C9D5376537A53936D3053C153C253D554856CCF545F5493
+548954799EFE548F5469546D70915494546A548A708356FD56FB56F872D80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+28
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000056FC56F6576557815763576772D1576E5778577F73A673A258F3594B594C
+74DD74E8753F59AD753E59C4759859C259B076F176F076F577F859BF77F959C9
+59B859AC7942793F79C559B759D77AFB5B607CFD5B965B9E5B945B9F5B9D80B5
+5C005C1982A082C05C495C4A82985CBB5CC182A782AE82BC5CB95C9E5CB45CBA
+5DF65E135E125E7782C35E9882A25E995E9D5EF8866E5EF98FD25F065F218FCD
+5F255F558FD790B290B45F845F8360306007963D6036963A96434FCD5FE90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+29
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000603D60084FC94FCB62BA62B24FDC62B762E462A74FDB4FC74FD662D562E1
+62DD62A662C162C562C062DF62E062DE53976589539965A665BA54A165FF54A5
+66176618660165FE54AE670C54B6676B67966782678A54BC67A354BE67A2678F
+54B067F967806B266B276B686B69579D6B816BB46BD1578F57996C1C579A5795
+58F4590D59536C976C6C6CDF5A006CEA59DD6CE46CD86CB26CCE6CC859F2708B
+70887090708F59F570877089708D70815BA8708C5CD05CD872405CD75CCB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007265726672685CC95CC772CD72D372DB5CD472CF73A773A3739E5CDF73AF
+5DF95E2173AA739C5E2075427544753B75415E9B759B759E5F0779C479C379C6
+6037603979C7607279CA604560537ACF7C767C747CFF7CFC6042605F7F5980A8
+6058606680B0624280B362CF80A480B680A780AC630380A65367820E82C4833E
+829C63006313631462FA631582AA62F082C9654365AA82A682B2662166326635
+8FCC8FD98FCA8FD88FCF90B7661D90AD90B99637670F9641963E96B697510000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000097634E574E794EB24EB04EAF4EB14FD24FD567E44FBE4FB84FB04FB14FC8
+67F667EE4FC64FCC4FE54FE34FB4516A67B2519F67C651C167CC51C251C35245
+524867C967CA524F67EA67CB52C552CA52C453275358537D6BE053DD53DC53DA
+53D954B96D1F54D054B454CA6D0A54A354DA54A46D1954B2549E549F54B56D1D
+6D4254CD6D1854CC6D03570057AC5791578E578D579257A1579057A657A8709F
+579C579657A770A170B470B570A958F572495909590872705952726E72CA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000059DF72E859EB59EF59F059D55A0D5A0459F95A0259F859E259D959E75B6A
+73B473EB5BAB73C75C1B5C2F73C6663C73CB74EC74EE5CD15CDC5CE65CE15CCD
+76795CE25CDD5CE55DFB5DFA5E1E76F75EA176FA77E75EFC5EFB5F2F78127805
+5F66780F780E7809605C7813604E6051794B794560236031607C605279D66060
+604A60617AD162187B017C7A7C787C797C7F7C807C81631F631762EA63216304
+63057FBE6531654465408014654265BE80C76629661B80C86623662C661A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006630663B661E6637663880C9670E80D780E667E867D6822167C767BC6852
+67BF67D567FE836367FB833A67B168016805680067D782F26B2A6B6B82FB82F6
+82F082EA6BE182E082FA6D236CFF6D146D056D136D066D21884E6D156CAF6CF4
+6D026D458A076D268FE36D448FEE6D2470A590BD70A390D570A270BB70A070AA
+90C891D470A870B670B270A79653964A70B9722E5005723C5013726D5030501B
+72E772ED503372EC72E572E24FF773C473BD73CF73C973C173D0503173CE0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074ED74EB519374EF754975507546754A5261754D75A6525E525F525575A8
+52CD530E76C776FF54E276FD77E6780A54F37804780B78075504781578085511
+79D379D479D079D77A7C54F854E07A7D7A837A8257017AD47AD57AD37AD07AD2
+7AFE7AFC7C777C7C7C7B57B657BF57C757D057B957C1590E594A7F8F80D35A2D
+80CB80D25A0F810980E280DF80C65B6C822482F782D882DD5C565C5482F882FC
+5CEE5CF182E95D0082EE5E2982D0830E82E2830B82FD517986765F6786780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000605A60678675867D6088884288666081898C8A0560958A0660978C9F609C
+8FF18FE78FE98FEF90C290BC632C90C690C06336634390CD90C9634B90C4633C
+958163419CEC50324FF9501D4FFF50044FF05003635150024FFC4FF250245008
+5036502E65C35010503850394FFD50564FFB51A351A651A1681A684951C751C9
+5260526452595265526752575263682B5253682F52CF684452CE52D052D152CC
+68266828682E550D54F46825551354EF54F554F9550255006B6D808255180000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054F054F66BE86BE355196BE7570557C96D6357B757CD6D0D6D616D9257BE
+57BB6D6D57DB57C857C457C557D157CA57C06D676D605A215A2A6D7C5A1D6D82
+5A0B6D2F6D686D8B6D7E5A226D846D165A246D7B5A145A316D905A2F5A1A5A12
+70DD70CB5A2670E270D75BBC5BBB5BB75C055C065C525C5370C770DA5CFA5CEB
+72425CF35CF55CE95CEF72FA5E2A5E305E2E5E2C5E2F5EAF5EA973D95EFD5F32
+5F8E5F935F8F604F609973D2607E73D46074604B6073607573E874DE60560000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+31
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060A9608B60A6755B609360AE609E60A7624575C075BF632E75BA63526330
+635B771B6319631B77126331635D6337633563537722635C633F654B78227835
+658B7828659A66506646664E6640782A664B6648795B66606644664D79526837
+682479EC79E0681B683679EA682C681968566847683E681E7A8B681568226827
+685968586855683068236B2E6B2B6B306B6C7B096B8B7C846BE96BEA6BE56D6B
+7C8D7C856D736D577D117D0E6D5D6D566D8F6D5B6D1C6D9A6D9B6D997F610000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+32
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D816D717F5D7F5B6D726D5C6D9670C470DB70CC70D070E370DF80F270D6
+70EE70D580FB81008201822F727A833372F573028319835173E273EC73D573F9
+73DF73E683228342834E831B73E473E174F3834D831683248320755675557558
+7557755E75C38353831E75B4834B75B18348865376CB76CC772A86967716770F
+869E8687773F772B770E772486857721771877DD86A7869578247836869D7958
+79598843796279DA79D9887679E179E579E879DB886F79E279F08874887C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+33
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008A128C477ADA7ADD8CA47ADB7ADC8D788DB57B0D7B0B7B147C8E7C868FF5
+7C877C837C8B90048FFC8FF690D67D2490D990DA90E37D257F627F937F997F97
+90DC90E47FC47FC6800A91D591E28040803C803B80F680FF80EE810481038107
+506A506180F750605053822D505D82278229831F8357505B504A506250158321
+505F506983188358506450465040506E50738684869F869B868986A68692868F
+86A0884F8878887A886E887B88848873555055348A0D8A0B8A19553655350000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+34
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000553055525545550C8FF990099008553990DE9151553B554091DB91DF91DE
+91D691E095859660965957F4965657ED57FD96BD57F8580B5042505958075044
+50665052505450715050507B507C505857E758015079506C507851A851D151CF
+5268527652D45A5553A053C45A385558554C55685A5F55495A6C5A53555D5529
+5A43555455535A44555A5A48553A553F552B57EA5A4C57EF5A695A4757DD57FE
+5A4257DE57E65B6E57E857FF580358F768A6591F5D1A595B595D595E5D0D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+35
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005D265A2B5D0F5A3B5D125D235A615A3A5A6E5A4B5A6B5EB45EB95A455A4E
+5A685A3D5A715A3F5A6F5A7560905A735A2C5A595A545A4F5A6360CF60E45BC8
+60DD5BC360B15C5B5C6160CA5D215D0A5D0960C05D2C5D08638A63825D2A5D15
+639E5D105D1363975D2F5D18636F5DE35E395E355E3A5E32639C636D63AE637C
+5EBB5EBA5F345F39638563816391638D6098655360D066656661665B60D760AA
+666260A160A4688760EE689C60E7686E68AE60DE6956686F637E638B68A90000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+36
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000687563796386639368776373636A686B636C68AA637F687163B263BA6896
+688B6366637468A4655A687B654E654D658D658E65AD6B3365C765CA6B9165C9
+6B8D65E366576C2A66636667671A671967166DAC6DE9689E68B6689868736E00
+689A688E68B768DB68A5686C68C168846DDB6DF46895687A68996DF068B868B9
+68706DCF6B356DD06B906BBB6BED6DD76DCD6DE36DC16DC36DCE70F771176DAD
+6E0470F06DB970F36DE770FC6E086E0671136E0A6DB070F66DF86E0C710E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+37
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006DB1727B6E026E076E096E016E176DFF6E12730A730871037107710170F5
+70F1710870F2710F740170FE7407740073FA731A7310730E740273F374087564
+73FB75CE75D275CF751B752375617568768F756775D37739772F769077317732
+76D576D776D67730773B7726784877407849771E784A784C782678477850784B
+7851784F78427846796B796E796C79F279F879F179F579F379F97A907B357B3B
+7A9A7A937A917AE17B247B337B217B1C7B167B177B367B1F7B2F7C937C990000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+38
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007C9A7C9C7C947D497C967D347D377D3D7D2D7D367D4C7D457D2C7D487D41
+7D477F3B7D3F7D4A7D3B7D288008801A7F9C801D7F9B8049804580447C9B7FD1
+7FC7812A812E801F801E81318047811A8134811781258119811B831D83718384
+8380837283A18127837983918211839F83AD823A8234832382748385839C83B7
+8658865A8373865786B2838F86AE8395839983758845889C889488A3888F88A5
+88A988A6888A88A0889089928991899483B08A268A328A2883AE83768A1C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+39
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000086568A2B8A2086C28A2986C586BA86B08A218C3A86B38C5B8C588C7C86BB
+8CA68CAE8CAD8D6588528D7E88958D7C8D7F8D7A8DBD889188A18DC08DBB8EAD
+8EAF8ED6889788A488AC888C88938ED9898289D69012900E90258A27901390EE
+8C3990AB90F78C5D9159915491F291F091E591F68DC28DB995878DC1965A8EDE
+8EDD966E8ED78EE08EE19679900B98E198E6900C9EC49ED24E8090F04E81508F
+50975088508990EC90E950815160915A91535E4251D391F491F151D251D60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000527391F9527091EB91F791E853A853A653C5559755DE966D966B559655B4
+96BF55859804559B55A0509B555950945586508B50A355AF557A508E509D5068
+559E509255A9570F570E581A5312581F53A4583C5818583E582655AD583A5645
+5822559358FB5963596455815AA85AA35A825A885AA15A855A9855955A99558E
+5A895A815A965A80581E58275A91582857F5584858255ACF581B5833583F5836
+582E58395A875AA0582C5A7959615A865AAB5AAA5AA45A8D5A7E5A785BD50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005A7C5AA55AAC5C1E5C5F5C5E5D445D3E5A975D485D1C5AA95D5B5D4D5A8C
+5A9C5D575A935D535D4F5BCD5D3B5D465BD15BCA5E465E475C305E485EC05EBD
+5EBF5D4B5F115D355F3E5F3B5D555F3A5D3A5D525D3D5FA75D5960EA5D396107
+6122610C5D325D3660B360D660D25E4160E360E560E95FAB60C9611160FD60E2
+60CE611E61206121621E611663E263DE63E660F860FC60FE60C163F8611863FE
+63C163BF63F763D1655F6560656163B063CE65D163E863EF667D666B667F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063CA63E066736681666D6669646163DF671E68ED63DC63C463D863D36903
+63C768FE68E5691E690263D763D9690968CA690065646901691868E268CF659D
+692E68C568FF65D2691C68C3667B6B6F66716B6E666A6BBE67016BF46C2D6904
+6DB66E756E1E68EA6E18690F6E4868F76E4F68E46E426E6A6E706DFE68E16907
+6E6D69086E7B6E7E6E5968EF6E5769146E806E5068FD6E296E766E2A6E4C712A
+68CE7135712C7137711D68F468D1713868D47134712B7133712771246B3B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000712D7232728372827287730673247338732A732C732B6DFC732F73287417
+6E496E88741974386E45741F7414743C73F7741C74157418743974F975246E51
+6E3B6E03756E756D7571758E6E6175E56E286E606E716E6B769476B36E3076D9
+6E657748774977436E776E55774277DF6E66786378766E5A785F786679667971
+712E713179767984797579FF7A0771287A0E7A09724B725A7288728972867285
+7AE77AE27B55733073227B437B577B6C7B427B5373267B417335730C7CA70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007CA07CA67CA47D74741A7D59742D7D607D577D6C7D7E7D6474207D5A7D5D
+752F756F756C7D767D4D7D7575E67FD37FD675E475D78060804E8145813B7747
+814881428149814081148141774C81EF81F68203786483ED785C83DA841883D2
+8408787084007868785E786284178346841483D38405841F8402841683CD83E6
+7AE6865D86D586E17B447B487B4C7B4E86EE884788467CA27C9E88BB7CA188BF
+88B47D6388B57D56899A8A437D4F7D6D8A5A7D6B7D527D548A358A388A420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008A498A5D8A4B8A3D7F667FA27FA07FA18C608C5E8C7F8C7E8C8380D48CB1
+8D878152814F8D888D83814D813A8D868D8B8D828DCA8DD28204823C8DD48DC9
+8EB0833B83CF83F98EF28EE48EF38EEA83E78EFD83FC8F9D902B902A83C89028
+9029902C840183DD903A90309037903B83CB910A83D683F583C991FE922083DE
+920B84069218922283D5921B920883D1920E9213839A83C3959583EE83C483FB
+968C967B967F968183FE968286E286E686D386E386DA96EE96ED86EB96EC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+40
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000975F976F86D7976D86D188488856885588BA88D798F088B888C088BE9AA9
+88BC88B79AE04EB7890188C950CC50BC899750AA50B989DB50AB50C350CD517E
+527E52798A588A4452E152E052E7538053AB53AA53A953E055EA8C8055D78CBE
+8CB055C157158D84586C8D89585C58505861586A5869585658605866585F5923
+596659688EEF8EF75ACE8EF95AC55AC38EE58EF55AD08EE88EF68EEB8EF18EEC
+8EF45B745B765BDC5BD75BDA5BDB91045C205D6D5D6690F95D645D6E91000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+41
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005D605F425F5A5F6E9164915F6130613A612A614361196131921A613D920F
+920C92006408643264389206643192276419921C6411921992176429641D957B
+958D958C643C96876446644796899683643A640796C8656B96F16570656D9770
+65E4669398A998EB9CE69EF9668F4E844EB6669250BF668E50AE694650CA50B4
+50C850C250B050C150BA693150CB50C9693E50B8697C694352786973527C6955
+55DB55CC6985694D69506947696769366964696155BF697D6B446B406B710000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+42
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B736B9C55C855F255CD6BC155C26BFA6C316C325864584F6EB86EA8586F
+6E916EBB585D6E9A5865585B6EA9586358716EB56E6C6EE85ACB6EDD6EDA6EE6
+6EAC5AB05ABF5AC86ED96EE36EE96EDB5ACA716F5AB65ACD71485A90714A716B
+5BD9714F715771745D635D4A5D6571457151716D5D6872517250724E5E4F7341
+5E4A732E73465EC574275EC674487453743D5FAF745D74566149741E74477443
+74587449612E744C7445743E61297501751E91686223757A75EE760276970000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+43
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007698641064126409775D77647753775878827890788A6439787A787D6423
+788B787864306428788D788878927881797E798364256427640B7980641B642E
+64217A0F656F65927A1D66867AA17AA466907AE97AEA66997B627B6B67207B5E
+695F7B79694E69627B6F7B686945696A7CAE6942695769597CB069487D906935
+7D8A69337D8B7D997D9569787D877D787D977D897D986976695869417FA3694C
+693B694B7FDD8057694F8163816A816C692F697B693C815D81756B43815F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+44
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B48817D816D6BFB6BFC8241844F84846E9B847F6EC88448842A847B8472
+8464842E845C84536EC6844184C86EC184628480843E848384716EA6844A8455
+84586EC36EDC6ED886FC86FD87156E8D871686FF6EBF6EB36ED0885888CF88E0
+6EA371477154715289E78A6A8A80715D8A6F8A6571788A788A7D8A8871587143
+8A648A7E715F8A678C638C88714D8CCD724F8CC9728C8DED7290728E733C7342
+733B733A73408EB1734974448F048F9E8FA090439046904890459040904C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+45
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074427446910C9113911574FF916B9167925D9255923569839259922F923C
+928F925C926A9262925F926B926E923B92449241959A7699959976DD7755775F
+968F77529696775A7769776796F496FC776D9755788797797894788F788497EE
+97F57886980B788398F37899788098F798FF98F5798298EC98F17A117A18999A
+7A129AE29B3D9B5D9CE87A1B9CEB9CEF9CEE9E819F1450D050D950DC50D87B69
+50E150EB7B737B7150F450E250DE7B767B637CB251F47CAF7D887D8652ED0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+46
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000052EA7D7F53327D7A53AE53B07D8355FB5603560B7D8456077D9255F87F6B
+5628561E7F6C5618561156515605571758928164588C817758785884587358AD
+58975895587758725896588D59108161596C82495AE782405AE4824584F15AEF
+5626847684795AF05D7B84655D83844084865D8B5D8C844D5D785E5284598474
+5ED05ECF85075FB35FB4843A8434847A617B8478616F6181613C614261386133
+844261606169617D6186622C62288452644C84C56457647C8447843664550000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+47
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064626471646A6456643B6481846E644F647E646486F7870C86FA86D686F5
+657186F8870E66A5669A669C870D66A688D666A4698F69C569C8699269B288CC
+88D0898569E369C069D669D1699F69A269D289DC89E68A7669E169D5699D8A3F
+8A7769988A846B746BA18A816EF06EF38C3C8C4B6F1B6F0C6F1D6F346F286F17
+8C856F446F426F046F116EFA6F4A7191718E8D93718B718D717F718C717E717C
+71838DEE71888DE98DE372948DE773557353734F7354746C7465746674610000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+48
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000746B746874768F0B7460903F74747506760E91107607910F911176B99114
+76B776E2916E7774777777767775923A777877719265777A715B777B78A678AE
+78B8926C924F926078B178AF923679897987923192547A2992507A2A924E7A2D
+7A2C92567A32959F7AEC7AF07B817B9E7B8396917B9296CE7BA37B9F7B9396F5
+7B867CB87CB79772980F980D980E98AC7DC87DB699AF7DD199B07DA87DAB9AAB
+7DB37DCD9CED7DCF7DA49EFD50E67F417F6F7F7150F350DB50EA50DD50E40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+49
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000050D38023805B50EF8061805F818152805281818482135330824A824C5615
+560C561284BD8495561C849284C35602849684A584B584B384A384E484D884D5
+589884B784AD84DA84938736587A58875891873D872B87478739587B8745871D
+58FE88FF88EA5AEE88F55AD5890088ED890388E95AF35AE289EA5ADB8A9B8A8E
+8AA25AD98A9C8A948A908AA98AAC5C638A9F5D805D7D8A9D5D7A8C675D775D8A
+8CD08CD68CD48D988D9A8D975D7F5E585E598E0B8E088E018EB48EB35EDC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008FA18FA25ED2905A5F449061905F5FB6612C9125917B9176917C61739289
+92F692B192AD929292819284617A92AE9290929E616A6161615695A295A7622B
+642B644D645B645D96A0969D969F96D0647D96D1646664A6975964829764645C
+644B64539819645098149815981A646B645964656477990665A098F89901669F
+99BE99BC99B799B699C069C999B869CE699669B099C469BC99BF69999ADA9AE4
+9AE99AE89AEA9AE569BF9B2669BD69A49B4069B969CA699A69CF69B369930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000069AA9EBD699E69D969976990510E69B550F769C650FC510D510151DA51D9
+51DB5286528E52EE533353B16EF15647562D56546F37564B5652563156445656
+5650562B6F18564D5637564F58A258B76F7358B26EEE58AA58B558B06F3C58B4
+58A458A76F0E59265AFE6EFD5B046F395AFC6EFC5B065B0A5AFA5B0D5B005B0E
+7187719071895D9171855D8F5D905D985DA45D9B5DA35D965DE45E5A72957293
+5E5E734D5FB86157615C61A661956188747261A3618F75006164750361590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006178761661856187619E7611760A6198619C7781777C622F6480649B648E
+648D649464C678B264A8648378AD64B9648664B464AF649178A064AA64A164A7
+66B666B3798B66BC66AC799466AD6A0E79886A1C6A1A7A2B7A4A6A0B7A2F69EF
+6A0C69F06A227AAC69D87B886A1269FA7B916A2A7B966A107B8C7B9B6A2969F9
+69EA6A2C6A247BA469E96B526B4F6B537CBA7DA76F106F656F757DAA7DC17DC0
+7DC56FD07DCE6F5C6F3D6F717DCC6F916F0B6F796F816F8F7DA66F596F740000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007DA171AE7F7371A371AD7FE57FDE71AB71A671A2818952F2725772557299
+734B747A8215849784A4748C748484BA84CE74827493747B84AB750984B484C1
+84CD84AA849A84B1778A849D779084BB78C678D378C078D278C778C284AF799F
+799D799E84B67A4184A07A387A3A7A4284DB84B07A3E7AB07BAE7BB38728876B
+7BBF872E871E7BCD87197BB28743872C8741873E8746872087327CC47CCD7CC2
+7CC67CC37CC97CC787427DF887277DED7DE2871A873087117DDC7E027E010000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000088F27DD688FE7DE47DFE88F67E007DFC7DFD88EB7DF57DFF899F7DEB7DE5
+7F787FAE7FE78A998065806A80668068806B819481A18192819681938D968E09
+85018DFF84F88DFD84F58E0385048E068E058DFE8E00851B85038533853484ED
+9123911C853591228505911D911A91249121877D917A91729179877192A5885C
+88E6890F891B92A089A989A589EE8AB1929A8ACC8ACE92978AB792A38AB58AE9
+8AB492958AB38AC18AAF8ACA8AD09286928C92998C8E927E92878CE98CDB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000928B8CEB8DA496A18DA28D9D977D977A977E97838E2A8E28977B97848EB8
+8EB68EB98EB78F228F2B8F278F198FA499078FB3999C9071906A99BB99BA9188
+918C92BF92B892BE92DC92E59B3F9B6092D492D69CF192DA92ED92F392DB5103
+92B992E292EB95AF50F695B295B3510C50FD510A96A396A552F152EF56485642
+970A563597879789978C97EF982A98225640981F563D9919563E99CA99DA563A
+571A58AB99DE99C899E058A39AB69AB558A59AF458FF9B6B9B699B729B630000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005AF69D0D5AF89D019D0C5B019CF85B055B0F9CFE9D029E845D9F9EAB9EAA
+511D51165DA0512B511E511B5290529453145E605E5C56675EDB567B5EE1565F
+5661618B6183617961B161B061A2618958C358CA58BB58C058C459015B1F5B18
+5B115B1561B35B125B1C64705B225B795DA664975DB35DAB5EEA648A5F5B64A3
+649F61B761CE61B961BD61CF61C06199619765B361BB61D061C4623166B764D3
+64C06A006A066A1769E564DC64D164C869E464D566C369EC69E266BF66C50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000069FE66CD66C167066A1467246A636A426A5269E66A436A3369FC6A6C6A57
+6A046A4C6A6E6A0F69F66A266A0769F46A376B516A716A4A6A366BA66A536C00
+6A456A706F416F266A5C6B586B576F926F8D6F896F8C6F626F4F6FBB6F5A6F96
+6FBE6F6C6F826F556FB56FD36F9F6F576FB76FF571B76F0071BB6F6B71D16F67
+71BA6F5371B671CC6F7F6F9571D3749B6F6A6F7B749674A2749D750A750E719A
+7581762C76377636763B71A476A171AA719C779871B37796729A735873520000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+52
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000078D678EB736078DC735B79A579A998347A537A4574897A4F74867ABD7ABB
+7AF17488747C7BEC7BED7507757E7CD3761E7CE1761D7E197623761A76287E27
+7E26769D769E806E81AF778F778981AD78CD81AA821878CC78D178CE78D4856F
+854C78C48542799A855C8570855F79A2855A854B853F878A7AB4878B87A1878E
+7BBE7BAC8799885E885F892489A78AEA8AFD8AF98AE38AE57DDB7DEA8AEC7DD7
+7DE17E037DFA8CF27DF68CEF7DF08DA67DDF7F767FAC8E3B8E437FED8E320000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008F318F307FE68F2D8F3C8FA78FA5819F819E819591379195918E82169196
+82539345930A824E825192FD9317931C930793319332932C9330930393058527
+95C284FB95B884FA95C1850C84F4852A96AB96B784F784EB97159714851284EA
+970C971784FE9793851D97D2850284FD983698319833983C982E983A84F0983D
+84F998B5992299239920991C991D866299A0876399EF99E899EB877387588754
+99E199E68761875A9AF89AF5876D876A9B839B949B84875D9B8B9B8F877A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B8C875C9B89874F9B8E8775876287679D249D0F89059D139D0A890B8917
+891889199D2A9D1A89119D279D169D2189A49E859EAC9EC69EC59ED79F538AB8
+5128512751DF8AD5533553B38ABE568A567D56898AC358CD58D08AD95B2B5B33
+5B295B355B315B375C365DBE8CDD5DB98DA05DBB8DA161E261DB61DD61DC61DA
+8E2E61D98E1B8E1664DF8E198E2664E18E1464EE8E1865B566D466D58E1A66D0
+66D166CE66D78F208F236A7D6A8A90736AA7906F6A996A826A88912B91290000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+55
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006A8691326A986A9D918591866A8F91816AAA91846B5D92D06C0A92C46FD7
+6FD66FE592CF92F192DF6FD96FDA6FEA92DD6FF692EF92C271E392CA71E992CE
+71EB71EF71F371EA92E092DE92E792D192D3737192E174AE92C674B3957C74AC
+95AB95AE75837645764E764476A376A577A677A4978A77A977AF97D097CF981E
+78F078F878F198287A49981B982798B27AC27AF27AF37BFA99167BF67BFC7C18
+7C087C1299D399D47CDB7CDA99D699D899CB7E2C7E4D9AB39AEC7F467FF60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000802B807481B881C89B679B749B71859285939B75857F85AB85979B6C9CFC
+85AC9CFD9CFF9CF787CE9D0087CD9CFB9D0887C187B187C79ED389409F10893F
+893951178943511151DE533489AB56708B1F8B098B0C566656638C4056728C96
+56778CF68CF758C88E468E4F58BF58BA58C28F3D8F4193669378935D93699374
+937D936E93729373936293489353935F93685DB1937F936B5DB595C45DAE96AF
+96AD96B25DAD5DAF971A971B5E685E665E6F5EE9979B979F5EE85EE55F4B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+57
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005FBC5FBB619D61A86196984061B4984761C198B761BA61BF61B8618C64D7
+99A264D064CF9A0099F3648964C399F564F364D99ABD9B009B0265A29B349B49
+9B9F66CA9BA39BCD9B999B9D66BA66CC9D396A349D446A496A679D356A686A3E
+9EAF6A6D512F6A5B6A519F8E6A5A569F569B569E5696569456A06A4F5B3B6A6F
+6A695B3A5DC15F4D5F5D61F36A4D6A4E6A466B5564F664E564EA64E765056BC8
+64F96C046C036C066AAB6AED6AB26AB06AB56ABE6AC16AC86FC46AC06ABC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+58
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006AB16AC46ABF6FA56FAE700870036FFD7010700270136FA271FA720074B9
+74BC6FB2765B7651764F76EB77B871D677B977C177C077BE790B71C77907790A
+790871BC790D7906791579AF729E736973667AF5736C73657C2E736A7C1B749A
+7C1A7C24749274957CE67CE37580762F7E5D7E4F7E667E5B7F477FB476327630
+76BB7FFA802E779D77A181CE779B77A282197795779985CC85B278E985BB85C1
+78DE78E378DB87E987EE87F087D6880E87DA8948894A894E894D89B189B00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000089B37AB78B388B327BE78B2D7BD58B347BDA8B298C747BD47BEA8D037BDC
+7BEB8DA98E587CD27CD48EBF8EC18F4A8FAC7E219089913D913C91A993A07E0E
+93907E159393938B93AD93BB93B87E0D7E14939C95D895D77F7B7F7C7F7A975D
+97A997DA8029806C81B181A6985481B99855984B81B0983F98B981B281B781A7
+81F29938993699408556993B993999A4855385619A089A0C85469A1085419B07
+85449BD285479BC29BBB9BCC9BCB854E856E9D4D9D639D4E85609D509D550000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000855D9D5E85659E909EB29EB186649ECA9F029F279F26879356AF58E058DC
+87965B39877987875B7C5BF3879087915C6B5DC4650B6508650A8789891E65DC
+8930892D66E166DF6ACE6AD46AE36AD76AE2892C891F89F18AE06AD86AD56AD2
+8AF58ADD701E702C70256FF37204720872158AE874C474C974C774C876A977C6
+77C57918791A79208CF37A667A647A6A8DA78E338E3E8E388E408E457C357C34
+8E3D8E417E6C8E3F7E6E7E718F2E81D481D6821A82628265827685DB85D60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000908685E79133913585F4919387FD87D58807918F880F87F89308931F8987
+930F89B589F5933C8B3F8B438B4C93018D0B8E6B8E688E708E758E7792FA8EC3
+92F993E993EA93CB93C593C6932993ED93D3932A93E5930C930B93DB93EB93E0
+93C1931695BC95DD95BE95B995BA95B695BF95B595BD96A996D497B297B497B1
+97B597F2979497F097F89856982F98329924994499279A269A1F9A189A219A17
+99E49B0999E399EA9BC59BDF9AB99BE39AB49BE99BEE9AFA9AF99D669D7A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B809D6E9D919D839D769D7E9D6D9B939E959EE39B7A9B959F039F049D25
+9F179D2051369D1453369D1D5B429D229D105B445B465B7E5DCA5DC85DCC5EF0
+9ED5658566E566E79F3D512651256AF451246AE9512952F45693568C568D703D
+56847036567E7216567F7212720F72177211720B5B2D5B2574CD74D074CC74CE
+74D15B2F75895B7B7A6F7C4B7C445E6C5E6A5FBE61C361B57E7F8B7161E0802F
+807A807B807C64EF64E964E385FC861086026581658085EE860366D2860D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000086138608860F881888126A9B6AA18967896589BB8B698B626A838B6E6AA4
+8B616A7F8B648B4D8C516A8C6A928E838EC66C09941F6FA99404941794089405
+6FED93F3941E9402941A941B9427941C71E196B571E871F2973371F097349731
+97B897BA749797FC74AB749098C374AD994D74A59A2F7510751175129AC97584
+9AC89AC49B2A9B389B5076E99C0A9BFB9C049BFC9BFE77B477B177A89C029BF6
+9C1B9BF99C159C109BFF9C009C0C78F978FE9D959DA579A87A5C7A5B7A560000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009E989EC17A5A9F5A516456BB7C0558E65B495BF77BFF7BFB5DD07BF45FC2
+7BF365117C096AFF6AFE6AFD7BFD6B017BF07BF1704B704D704774D376687667
+7E33984877D179307932792E7E479F9D7AC97AC87E3B7C567C517E3A7F457F7F
+7E857E897E8E7E84802C826A862B862F862881C586168615861D881A825A825C
+858389BC8B758B7C85958D118D128F5C91BB85A493F4859E8577942D858985A1
+96E497379736976797BE97BD97E29868986698C898CA98C798DC8585994F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000099A99A3C85909A3B9ACE87BE9B149B5387C59C2E87AC9C1F87B587BC87AE
+87C99DB09DBD87CC87B79DAE9DC49E7B87B487B69E9E87B89F0587DE9F699FA1
+56C7571D5B4A5DD389525F72620289AD62356527651E651F8B1E8B186B076B06
+8B058B0B7054721C72207AF88B077C5D7C588B067E927F4E8B1A8C4F8C708827
+8C718B818B838C948C448D6F8E4E8E4D8E539442944D9454944E8F409443907E
+9138973C974097C09199919F91A1919D995A9A5193839ADD936493569C380000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000937C9C459C3A93769C359350935193609EF1938F9F93529A937993578641
+5DD7934F65289377937B936170537059936772219359766F793779B57C627C5E
+7CF596AE96B0863D9720882D89898B8D8B878B908D1A8E99979E979D97D5945F
+97F1984194569461945B945A945C9465992B9741992A9933986E986C986D9931
+99AA9A5C9A589ADE9A029C4F9C5199F79C5399F899F699FB9DFC9F3999FC513E
+9ABE56D29AFD5B4F6B149B487A727A739B9E9B9B9BA68B919BA59BA491BF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+61
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009BA2946C9BAF9D3396E697459D3697C897E4995D9D389B219D459B2C9B57
+9D3E9D379C5D9C619C659E089E8A9E899E8D9EB09EC89F459EFB9EFF620566EF
+6B1B6B1D722572247C6D512E8642864956978978898A8B9759708C9B8D1C5C6A
+8EA25E6D5E6E61D861DF61ED61EE61F161EA9C6C61EB9C6F61E99E0E65049F08
+9F1D9FA3650364FC5F606B1C66DA66DB66D87CF36AB98B9B8EA791C46ABA947A
+6AB76AC79A619A639AD79C766C0B9FA5700C7067700172AB864A897D8B9D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008C538F65947B6FFC98CD98DD72019B309E16720371FD737674B874C096E7
+9E189EA274B69F7C74C27E9E9484765C9E1C76597C7197CA7657765A76A69EA3
+76EC9C7B9F97790C7913975079097910791257275C1379AC7A5F7C1C7C297C19
+7C205FC87C2D7C1D7C267C287C2267657C307E5C52BD7E565B667E5865F96788
+6CE66CCB7E574FBD5F8D7FB36018604880756B2970A681D07706825E85B485C6
+5A105CFC5CFE85B385B585BD85C785C485BF70C985CE85C885C585B185B60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000085D28624957985B796BA866987E787E687E287DB87EB87EA7B29812887F3
+8A2E87D487DC87D39AD987D8582B584587D963FA87F487E887DD6E86894B894F
+894C89468950586789495BDD656E8B238B338B308C878B4750D250DF8B3E8B31
+8B258B3769BA8B366B9D8B2480598B3D8B3A8C428C758C998C988C978CFE8D04
+8D028D008E5C6F8A8E608E577BC37BC28E658E678E5B8E5A90F68E5D98238E54
+8F468F478F488F4B71CD7499913B913E91A891A591A7984291AA93B5938C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+64
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000093927F84939B939D938993A7938E8D0E939E9861939593888B73939F9C27
+938D945877D69B2D93A493A893B493A395D295D395D196B396D796DA5DC296DF
+96D896DD97239722972597AC97AE97A84F664F684FE7503F97A550A6510F523E
+53245365539B517F54CB55735571556B55F456225620569256BA569156B05759
+578A580F581258135847589B5900594D5AD15AD35B675C575C775CD55D755D8E
+5DA55DB65DBF5E655ECD5EED5F945F9A5FBA6125615062A36360636463B60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+65
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000640364B6651A7A255C2166E2670267A467AC68106806685E685A692C6929
+6A2D6A776A7A6ACA6AE66AF56B0D6B0E6BDC6BDD6BF66C1E6C636DA56E0F6E8A
+6E846E8B6E7C6F4C6F486F496F9D6F996FF8702E702D705C79CC70BF70EA70E5
+71117112713F7139713B713D71777175717671717196719371B471DD71DE720E
+591172187347734873EF7412743B74A4748D74B47673767776BC7819781B783D
+78537854785878B778D878EE7922794D7986799979A379BC7AA77B377B590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+66
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007BD07C2F7C327C427C4E7C687CA97CED7DD07E077DD37E647F40791E8041
+806380BB6711672582488310836283128421841E84E284DE84E1857385D485F5
+863786458672874A87A987A587F5883488508887895489848B038C528CD88D0C
+8D188DB08EBC8ED58FAA909C85E8915C922B9221927392F492F5933F93429386
+93BE93BC93BD93F193F293EF94229423942494679466959795CE95E7973B974D
+98E499429B1D9B9889629D4964495E715E8561D3990E8002781E898889B70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005528557255BA55F055EE56B856B956C4805392B08B558B518B428B528B57
+8C438C778C768C9A8D068D078D098DAC8DAA8DAD8DAB8E6D8E788E738E6A8E6F
+8E7B8EC28F528F518F4F8F508F538FB49140913F91B091AD93DE93C793CF93C2
+93DA93D093F993EC93CC93D993A993E693CA93D493EE93E393D593C493CE93C0
+93D293A593E7957D95DA95DB96E19729972B972C9728972697B397B797B697DD
+97DE97DF985C9859985D985798BF98BD98BB98BE99489947994399A699A70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+68
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A1A9A159A259A1D9A249A1B9A229A209A279A239A1E9A1C9A149AC29B0B
+9B0A9B0E9B0C9B379BEA9BEB9BE09BDE9BE49BE69BE29BF09BD49BD79BEC9BDC
+9BD99BE59BD59BE19BDA9D779D819D8A9D849D889D719D809D789D869D8B9D8C
+9D7D9D6B9D749D759D709D699D859D739D7B9D829D6F9D799D7F9D879D689E94
+9E919EC09EFC9F2D9F409F419F4D9F569F579F58533756B256B556B358E35B45
+5DC65DC75EEE5EEF5FC05FC161F9651765166515651365DF66E866E366E40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006AF36AF06AEA6AE86AF96AF16AEE6AEF703C7035702F7037703470317042
+7038703F703A7039702A7040703B703370417213721472A8737D737C74BA76AB
+76AA76BE76ED77CC77CE77CF77CD77F279257923792779287924792979B27A6E
+7A6C7A6D7AF77C497C487C4A7C477C457CEE7E7B7E7E7E817E807FBA7FFF8079
+81DB81D982688269862285FF860185FE861B860085F6860486098605860C85FD
+8819881088118817881388168963896689B989F78B608B6A8B5D8B688B630000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B658B678B6D8DAE8E868E888E848F598F568F578F558F588F5A908D9143
+914191B791B591B291B3940B941393FB9420940F941493FE9415941094289419
+940D93F5940093F79407940E9416941293FA940993F8943C940A93FF93FC940C
+93F69411940695DE95E095DF972E972F97B997BB97FD97FE986098629863985F
+98C198C29950994E9959994C994B99539A329A349A319A2C9A2A9A369A299A2E
+9A389A2D9AC79ACA9AC69B109B129B119C0B9C089BF79C059C129BF89C400000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009C079C0E9C069C179C149C099D9F9D999DA49D9D9D929D989D909D9B9DA0
+9D949D9C9DAA9D979DA19D9A9DA29DA89D9E9DA39DBF9DA99D969DA69DA79E99
+9E9B9E9A9EE59EE49EE79EE69F309F2E9F5B9F609F5E9F5D9F599F91513A5139
+5298529756C356BD56BE5B485B475DCB5DCF5EF161FD651B6B026AFC6B036AF8
+6B0070437044704A7048704970457046721D721A7219737E7517766A77D0792D
+7931792F7C547C537CF27E8A7E877E887E8B7E867E8D7F4D7FBB803081DD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008618862A8626861F8623861C86198627862E862186208629861E86258829
+881D881B88208824881C882B884A896D8969896E896B89FA8B798B788B458B7A
+8B7B8D108D148DAF8E8E8E8C8F5E8F5B8F5D91469144914591B9943F943B9436
+9429943D94309439942A9437942C9440943195E595E495E39735973A97BF97E1
+986498C998C698C0995899569A399A3D9A469A449A429A419A3A9A3F9ACD9B15
+9B179B189B169B3A9B529C2B9C1D9C1C9C2C9C239C289C299C249C219DB70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DB69DBC9DC19DC79DCA9DCF9DBE9DC59DC39DBB9DB59DCE9DB99DBA9DAC
+9DC89DB19DAD9DCC9DB39DCD9DB29E7A9E9C9EEB9EEE9EED9F1B9F189F1A9F31
+9F4E9F659F649F924EB956C656C556CB59715B4B5B4C5DD55DD15EF265216520
+652665226B0B6B086B096C0D7055705670577052721E721F72A9737F74D874D5
+74D974D7766D76AD793579B47A707A717C577C5C7C597C5B7C5A7CF47CF17E91
+7F4F7F8781DE826B863486358633862C86328636882C88288826882A88250000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000897189BF89BE89FB8B7E8B848B828B868B858B7F8D158E958E948E9A8E92
+8E908E968E978F608F629147944C9450944A944B944F94479445944894499446
+973F97E3986A986998CB9954995B9A4E9A539A549A4C9A4F9A489A4A9A499A52
+9A509AD09B199B2B9B3B9B569B559C469C489C3F9C449C399C339C419C3C9C37
+9C349C329C3D9C369DDB9DD29DDE9DDA9DCB9DD09DDC9DD19DDF9DE99DD99DD8
+9DD69DF59DD59DDD9EB69EF09F359F339F329F429F6B9F959FA2513D52990000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000058E858E759725B4D5DD8882F5F4F62016203620465296525659666EB6B11
+6B126B0F6BCA705B705A7222738273817383767077D47C677C667E95826C863A
+86408639863C8631863B863E88308832882E883389768974897389FE8B8C8B8E
+8B8B8B888C458D198E988F648F6391BC94629455945D9457945E97C497C59800
+9A569A599B1E9B1F9B209C529C589C509C4A9C4D9C4B9C559C599C4C9C4E9DFB
+9DF79DEF9DE39DEB9DF89DE49DF69DE19DEE9DE69DF29DF09DE29DEC9DF40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+70
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DF39DE89DED9EC29ED09EF29EF39F069F1C9F389F379F369F439F4F9F71
+9F709F6E9F6F56D356CD5B4E5C6D652D66ED66EE6B13705F7061705D70607223
+74DB74E577D5793879B779B67C6A7E977F89826D8643883888378835884B8B94
+8B958E9E8E9F8EA08E9D91BE91BD91C2946B9468946996E597469743974797C7
+97E59A5E9AD59B599C639C679C669C629C5E9C609E029DFE9E079E039E069E05
+9E009E019E099DFF9DFD9E049EA09F1E9F469F749F759F7656D4652E65B80000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+71
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B186B196B176B1A7062722672AA77D877D979397C697C6B7CF67E9A7E98
+7E9B7E9981E081E18646864786488979897A897C897B89FF8B988B998EA58EA4
+8EA3946E946D946F9471947397499872995F9C689C6E9C6D9E0B9E0D9E109E0F
+9E129E119EA19EF59F099F479F789F7B9F7A9F79571E70667C6F883C8DB28EA6
+91C394749478947694759A609B2E9C749C739C719C759E149E139EF69F0A9FA4
+706870657CF7866A883E883D883F8B9E8C9C8EA98EC9974B9873987498CC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000996199AB9A649A669A679B249E159E179F4862076B1E7227864C8EA89482
+948094819A699A689E19864B8B9F94839C799EB776759A6B9C7A9E1D7069706A
+72299EA49F7E9F499F988AF68AFC8C6B8C6D8C938CF48E448E318E348E428E39
+8E358F3B8F2F8F388F338FA88FA69075907490789072907C907A913491929320
+933692F89333932F932292FC932B9304931A9310932693219315932E931995BB
+96A796A896AA96D5970E97119716970D9713970F975B975C9766979898300000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+73
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009838983B9837982D9839982499109928991E991B9921991A99ED99E299F1
+9AB89ABC9AFB9AED9B289B919D159D239D269D289D129D1B9ED89ED49F8D9F9C
+512A511F5121513252F5568E5680569056855687568F58D558D358D158CE5B30
+5B2A5B245B7A5C375C685DBC5DBA5DBD5DB85E6B5F4C5FBD61C961C261C761E6
+61CB6232623464CE64CA64D864E064F064E664EC64F164E264ED6582658366D9
+66D66A806A946A846AA26A9C6ADB6AA36A7E6A976A906AA06B5C6BAE6BDA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C086FD86FF16FDF6FE06FDB6FE46FEB6FEF6F806FEC6FE16FE96FD56FEE
+6FF071E771DF71EE71E671E571ED71EC71F471E0723572467370737274A974B0
+74A674A876467642764C76EA77B377AA77B077AC77A777AD77EF78F778FA78F4
+78EF790179A779AA7A577ABF7C077C0D7BFE7BF77C0C7BE07CE07CDC7CDE7CE2
+7CDF7CD97CDD7E2E7E3E7E467E377E327E437E2B7E3D7E317E457E417E347E39
+7E487E357E3F7E2F7F447FF37FFC807180728070806F807381C681C381BA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+75
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081C281C081BF81BD81C981BE81E88209827185AA8584857E859C85918594
+85AF859B858785A8858A85A6866787C087D187B387D287C687AB87BB87BA87C8
+87CB893B893689448938893D89AC8B0E8B178B198B1B8B0A8B208B1D8B048B10
+8C418C3F8C738CFA8CFD8CFC8CF88CFB8DA88E498E4B8E488E4A8F448F3E8F42
+8F458F3F907F907D9084908190829080913991A3919E919C934D938293289375
+934A9365934B9318937E936C935B9370935A935495CA95CB95CC95C895C60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+76
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000096B196B896D6971C971E97A097D3984698B699359A0199FF9BAE9BAB9BAA
+9BAD9D3B9D3F9E8B9ECF9EDE9EDC9EDD9EDB9F3E9F4B53E2569556AE58D958D8
+5B385F5E61E3623364F464F264FE650664FA64FB64F765B766DC67266AB36AAC
+6AC36ABB6AB86AC26AAE6AAF6B5F6B786BAF7009700B6FFE70066FFA7011700F
+71FB71FC71FE71F87377737574A774BF751576567658765277BD77BF77BB77BC
+790E79AE7A617A627A607AC47AC57C2B7C277C2A7C1E7C237C217CE77E540000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E557E5E7E5A7E617E527E597F487FF97FFB8077807681CD81CF820A85CF
+85A985CD85D085C985B085BA85B987EF87EC87F287E0898689B289F48B288B39
+8B2C8B2B8C508D058E598E638E668E648E5F8E558EC08F498F4D908790839088
+91AB91AC91D09394938A939693A293B393AE93AC93B09398939A939795D495D6
+95D095D596E296DC96D996DB96DE972497A397A697AD97F9984D984F984C984E
+985398BA993E993F993D992E99A59A0E9AC19B039B069B4F9B4E9B4D9BCA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+78
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009BC99BFD9BC89BC09D519D5D9D609EE09F159F2C513356A556A858DE58DF
+58E25BF59F905EEC61F261F761F661F56500650F66E066DD6AE56ADD6ADA6AD3
+701B701F7028701A701D701570187206720D725872A27378737A74BD74CA74E3
+75877586765F766177C7791979B17A6B7A697C3E7C3F7C387C3D7C377C407E6B
+7E6D7E797E697E6A7E737F857FB67FB97FB881D885E985DD85EA85D585E485E5
+85F787FB8805880D87F987FE8960895F8956895E8B418B5C8B588B498B5A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+79
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B4E8B4F8B468B598D088D0A8E7C8E728E878E768E6C8E7A8E748F548F4E
+8FAD908A908B91B191AE93E193D193DF93C393C893DC93DD93D693E293CD93D8
+93E493D793E895DC96B496E3972A9727976197DC97FB985E9858985B98BC9945
+99499A169A199B0D9BE89BE79BD69BDB9D899D619D729D6A9D6C9E929E979E93
+9EB452F856B756B656B456BC58E45B405B435B7D5BF65DC961F861FA65186514
+651966E667276AEC703E703070327210737B74CF766276657926792A792C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000792B7AC77AF67C4C7C437C4D7CEF7CF08FAE7E7D7E7C7E827F4C800081DA
+826685FB85F9861185FA8606860B8607860A88148815896489BA89F88B708B6C
+8B668B6F8B5F8B6B8D0F8D0D8E898E818E858E8291B491CB9418940393FD95E1
+973098C49952995199A89A2B9A309A379A359C139C0D9E799EB59EE89F2F9F5F
+9F639F615137513856C156C056C259145C6C5DCD61FC61FE651D651C659566E9
+6AFB6B046AFA6BB2704C721B72A774D674D4766977D37C507E8F7E8C7FBC0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008617862D861A882388228821881F896A896C89BD8B748B778B7D8D138E8A
+8E8D8E8B8F5F8FAF91BA942E94339435943A94389432942B95E2973897399732
+97FF9867986599579A459A439A409A3E9ACF9B549B519C2D9C259DAF9DB49DC2
+9DB89E9D9EEF9F199F5C9F669F67513C513B56C856CA56C95B7F5DD45DD25F4E
+61FF65246B0A6B6170517058738074E4758A766E766C79B37C607C5F807E807D
+81DF8972896F89FC8B808D168D178E918E938F619148944494519452973D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000973E97C397C1986B99559A559A4D9AD29B1A9C499C319C3E9C3B9DD39DD7
+9F349F6C9F6A9F9456CC5DD662006523652B652A66EC6B1074DA7ACA7C647C63
+7C657E937E967E9481E28638863F88318B8A9090908F9463946094649768986F
+995C9A5A9A5B9A579AD39AD49AD19C549C579C569DE59E9F9EF456D158E9652C
+705E7671767277D77F507F888836883988628B938B928B9682778D1B91C0946A
+97429748974497C698709A5F9B229B589C5F9DF99DFA9E7C9E7D9F079F770000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009F725EF36B1670637C6C7C6E883B89C08EA191C1947294709871995E9AD6
+9B239ECC706477DA8B9A947797C99A629A657E9C8B9C8EAA91C5947D947E947C
+9C779C789EF78C54947F9E1A72289A6A9B319E1B9E1E7C720000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cns11643.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-11.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-11.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-11.enc	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,20 @@
+# 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


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-11.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-7.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-7.enc	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-7.enc	2022-03-14 10:03:11 UTC (rev 62700)
@@ -12,7 +12,7 @@
 0070007100720073007400750076007700780079007A007B007C007D007E007F
 0080008100820083008400850086008700880089008A008B008C008D008E008F
 0090009100920093009400950096009700980099009A009B009C009D009E009F
-00A02018201900A30000000000A600A700A800A9000000AB00AC00AD00002015
+00A02018201900A320AC20AF00A600A700A800A9037A00AB00AC00AD00002015
 00B000B100B200B303840385038600B703880389038A00BB038C00BD038E038F
 0390039103920393039403950396039703980399039A039B039C039D039E039F
 03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/init.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/init.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/init.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -16,7 +16,7 @@
 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 8.6.11
+package require -exact Tcl 8.6.12
 
 # Compute the auto path to use in this interpreter.
 # The values on the path come from several locations:
@@ -494,7 +494,7 @@
 	    continue
 	} else {
 	    set error [catch {
-		fconfigure $f -eofchar \032
+		fconfigure $f -eofchar "\032 {}"
 		set id [gets $f]
 		if {$id eq "# Tcl autoload index file, version 2.0"} {
 		    eval [read $f]
@@ -643,7 +643,7 @@
     }
     set auto_execs($name) ""
 
-    set shellBuiltins [list assoc cls copy date del dir echo erase ftype \
+    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.

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/optparse.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/optparse.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/optparse.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -601,7 +601,7 @@
 	    return [expr {$arg ? 1 : 0}]
         }
         choice {
-            if {[lsearch -exact $typeArgs $arg] < 0} {
+            if {$arg ni $typeArgs} {
                 error "invalid choice"
             }
 	    return $arg

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/safe.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/safe.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/safe.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -131,7 +131,7 @@
 		[list -accessPath $state(access_path)] \
 		[list -statics    $state(staticsok)]   \
 		[list -nested     $state(nestedok)]    \
-	        [list -deleteHook $state(cleanupHook)]]]
+		[list -deleteHook $state(cleanupHook)]]]
 	}
 	2 {
 	    # If we have exactly 2 arguments the semantic is a "configure
@@ -982,7 +982,7 @@
     set replacementMsg "script error"
     set code [catch {
 	set f [open $realfile]
-	fconfigure $f -eofchar \032
+	fconfigure $f -eofchar "\032 {}"
 	if {$encoding ne ""} {
 	    fconfigure $f -encoding $encoding
 	}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Accra
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Accra	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Accra	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,66 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Africa/Accra) {
-    {-9223372036854775808 -52 0 LMT}
-    {-1709337548 0 0 GMT}
-    {-1581206400 1200 1 +0020}
-    {-1577917200 0 0 GMT}
-    {-1556834400 1200 1 +0020}
-    {-1546294800 0 0 GMT}
-    {-1525298400 1200 1 +0020}
-    {-1514758800 0 0 GMT}
-    {-1493762400 1200 1 +0020}
-    {-1483222800 0 0 GMT}
-    {-1462226400 1200 1 +0020}
-    {-1451686800 0 0 GMT}
-    {-1430604000 1200 1 +0020}
-    {-1420064400 0 0 GMT}
-    {-1399068000 1200 1 +0020}
-    {-1388528400 0 0 GMT}
-    {-1367532000 1200 1 +0020}
-    {-1356992400 0 0 GMT}
-    {-1335996000 1200 1 +0020}
-    {-1325456400 0 0 GMT}
-    {-1304373600 1200 1 +0020}
-    {-1293834000 0 0 GMT}
-    {-1272837600 1200 1 +0020}
-    {-1262298000 0 0 GMT}
-    {-1241301600 1200 1 +0020}
-    {-1230762000 0 0 GMT}
-    {-1209765600 1200 1 +0020}
-    {-1199226000 0 0 GMT}
-    {-1178143200 1200 1 +0020}
-    {-1167603600 0 0 GMT}
-    {-1146607200 1200 1 +0020}
-    {-1136067600 0 0 GMT}
-    {-1115071200 1200 1 +0020}
-    {-1104531600 0 0 GMT}
-    {-1083535200 1200 1 +0020}
-    {-1072995600 0 0 GMT}
-    {-1051912800 1200 1 +0020}
-    {-1041373200 0 0 GMT}
-    {-1020376800 1200 1 +0020}
-    {-1009837200 0 0 GMT}
-    {-988840800 1200 1 +0020}
-    {-978301200 0 0 GMT}
-    {-957304800 1200 1 +0020}
-    {-946765200 0 0 GMT}
-    {-936309600 1200 1 +0020}
-    {-915142800 0 0 GMT}
-    {-904773600 1200 1 +0020}
-    {-883606800 0 0 GMT}
-    {-880329600 1800 0 +0030}
-    {-756952200 0 0 GMT}
-    {-610149600 1800 1 +0030}
-    {-599610600 0 0 GMT}
-    {-578613600 1800 1 +0030}
-    {-568074600 0 0 GMT}
-    {-546991200 1800 1 +0030}
-    {-536452200 0 0 GMT}
-    {-515455200 1800 1 +0030}
-    {-504916200 0 0 GMT}
-    {-483919200 1800 1 +0030}
-    {-473380200 0 0 GMT}
-    {-452383200 1800 1 +0030}
-    {-441844200 0 0 GMT}
+if {![info exists TZData(Africa/Abidjan)]} {
+    LoadTimeZoneFile Africa/Abidjan
 }
+set TZData(:Africa/Accra) $TZData(:Africa/Abidjan)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Juba
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Juba	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Juba	2022-03-14 10:03:11 UTC (rev 62700)
@@ -36,4 +36,5 @@
     {483487200 10800 1 CAST}
     {498171600 7200 0 CAT}
     {947930400 10800 0 EAT}
+    {1612126800 7200 0 CAT}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anguilla
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anguilla	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anguilla	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Anguilla) $TZData(:America/Port_of_Spain)
+set TZData(:America/Anguilla) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Antigua
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Antigua	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Antigua	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Antigua) $TZData(:America/Port_of_Spain)
+set TZData(:America/Antigua) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Aruba
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Aruba	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Aruba	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Curacao)]} {
-    LoadTimeZoneFile America/Curacao
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Aruba) $TZData(:America/Curacao)
+set TZData(:America/Aruba) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atikokan
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atikokan	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atikokan	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,12 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Atikokan) {
-    {-9223372036854775808 -21988 0 LMT}
-    {-2366733212 -21600 0 CST}
-    {-1632067200 -18000 1 CDT}
-    {-1615136400 -21600 0 CST}
-    {-923248800 -18000 1 CDT}
-    {-880214400 -18000 0 CWT}
-    {-769395600 -18000 1 CPT}
-    {-765388800 -18000 0 EST}
+if {![info exists TZData(America/Panama)]} {
+    LoadTimeZoneFile America/Panama
 }
+set TZData(:America/Atikokan) $TZData(:America/Panama)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Barbados
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Barbados	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Barbados	2022-03-14 10:03:11 UTC (rev 62700)
@@ -2,8 +2,15 @@
 
 set TZData(:America/Barbados) {
     {-9223372036854775808 -14309 0 LMT}
-    {-1451678491 -14309 0 BMT}
-    {-1199217691 -14400 0 AST}
+    {-1841256091 -14400 0 AST}
+    {-874263600 -10800 1 ADT}
+    {-862682400 -14400 0 AST}
+    {-841604400 -10800 1 ADT}
+    {-830714400 -14400 0 AST}
+    {-820526400 -14400 0 -0330}
+    {-811882800 -12600 1 AST}
+    {-798660000 -14400 0 -0330}
+    {-788904000 -14400 0 AST}
     {234943200 -10800 1 ADT}
     {244616400 -14400 0 AST}
     {261554400 -10800 1 ADT}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Blanc-Sablon
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Blanc-Sablon	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Blanc-Sablon	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,12 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Blanc-Sablon) {
-    {-9223372036854775808 -13708 0 LMT}
-    {-2713896692 -14400 0 AST}
-    {-1632074400 -10800 1 ADT}
-    {-1615143600 -14400 0 AST}
-    {-880221600 -10800 1 AWT}
-    {-769395600 -10800 1 APT}
-    {-765399600 -14400 0 AST}
-    {14400 -14400 0 AST}
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
+set TZData(:America/Blanc-Sablon) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Coral_Harbour
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Coral_Harbour	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Coral_Harbour	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Atikokan)]} {
-    LoadTimeZoneFile America/Atikokan
+if {![info exists TZData(America/Panama)]} {
+    LoadTimeZoneFile America/Panama
 }
-set TZData(:America/Coral_Harbour) $TZData(:America/Atikokan)
+set TZData(:America/Coral_Harbour) $TZData(:America/Panama)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Creston
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Creston	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Creston	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,8 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Creston) {
-    {-9223372036854775808 -27964 0 LMT}
-    {-2713882436 -25200 0 MST}
-    {-1680454800 -28800 0 PST}
-    {-1627833600 -25200 0 MST}
+if {![info exists TZData(America/Phoenix)]} {
+    LoadTimeZoneFile America/Phoenix
 }
+set TZData(:America/Creston) $TZData(:America/Phoenix)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Curacao
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Curacao	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Curacao	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,7 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Curacao) {
-    {-9223372036854775808 -16547 0 LMT}
-    {-1826738653 -16200 0 -0430}
-    {-157750200 -14400 0 AST}
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
+set TZData(:America/Curacao) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dominica
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dominica	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dominica	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Dominica) $TZData(:America/Port_of_Spain)
+set TZData(:America/Dominica) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grenada
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grenada	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grenada	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Grenada) $TZData(:America/Port_of_Spain)
+set TZData(:America/Grenada) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guadeloupe
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guadeloupe	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guadeloupe	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Guadeloupe) $TZData(:America/Port_of_Spain)
+set TZData(:America/Guadeloupe) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guyana
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guyana	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guyana	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,8 +1,9 @@
 # created by tools/tclZIC.tcl - do not edit
 
 set TZData(:America/Guyana) {
-    {-9223372036854775808 -13960 0 LMT}
-    {-1730578040 -13500 0 -0345}
-    {176010300 -10800 0 -03}
-    {662698800 -14400 0 -04}
+    {-9223372036854775808 -13959 0 LMT}
+    {-1843589241 -14400 0 -04}
+    {-1730577600 -13500 0 -0345}
+    {176096700 -10800 0 -03}
+    {701841600 -14400 0 -04}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kralendijk
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kralendijk	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kralendijk	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Curacao)]} {
-    LoadTimeZoneFile America/Curacao
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Kralendijk) $TZData(:America/Curacao)
+set TZData(:America/Kralendijk) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lower_Princes
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lower_Princes	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lower_Princes	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Curacao)]} {
-    LoadTimeZoneFile America/Curacao
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Lower_Princes) $TZData(:America/Curacao)
+set TZData(:America/Lower_Princes) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Marigot
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Marigot	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Marigot	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Marigot) $TZData(:America/Port_of_Spain)
+set TZData(:America/Marigot) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montserrat
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montserrat	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montserrat	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Montserrat) $TZData(:America/Port_of_Spain)
+set TZData(:America/Montserrat) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nassau
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nassau	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nassau	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,284 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Nassau) {
-    {-9223372036854775808 -18570 0 LMT}
-    {-1825095030 -18000 0 EST}
-    {-873140400 -14400 1 EWT}
-    {-788904000 -18000 0 EST}
-    {-786222000 -14400 1 EWT}
-    {-769395600 -14400 1 EPT}
-    {-763848000 -18000 0 EST}
-    {-179341200 -14400 1 EDT}
-    {-163620000 -18000 0 EST}
-    {-147891600 -14400 1 EDT}
-    {-131565600 -18000 0 EST}
-    {-116442000 -14400 1 EDT}
-    {-100116000 -18000 0 EST}
-    {-84387600 -14400 1 EDT}
-    {-68666400 -18000 0 EST}
-    {-52938000 -14400 1 EDT}
-    {-37216800 -18000 0 EST}
-    {-21488400 -14400 1 EDT}
-    {-5767200 -18000 0 EST}
-    {9961200 -14400 1 EDT}
-    {25682400 -18000 0 EST}
-    {41410800 -14400 1 EDT}
-    {57736800 -18000 0 EST}
-    {73465200 -14400 1 EDT}
-    {89186400 -18000 0 EST}
-    {104914800 -14400 1 EDT}
-    {120636000 -18000 0 EST}
-    {136364400 -14400 1 EDT}
-    {152085600 -18000 0 EST}
-    {167814000 -14400 1 EDT}
-    {183535200 -18000 0 EST}
-    {189320400 -18000 0 EST}
-    {199263600 -14400 1 EDT}
-    {215589600 -18000 0 EST}
-    {230713200 -14400 1 EDT}
-    {247039200 -18000 0 EST}
-    {262767600 -14400 1 EDT}
-    {278488800 -18000 0 EST}
-    {294217200 -14400 1 EDT}
-    {309938400 -18000 0 EST}
-    {325666800 -14400 1 EDT}
-    {341388000 -18000 0 EST}
-    {357116400 -14400 1 EDT}
-    {372837600 -18000 0 EST}
-    {388566000 -14400 1 EDT}
-    {404892000 -18000 0 EST}
-    {420015600 -14400 1 EDT}
-    {436341600 -18000 0 EST}
-    {452070000 -14400 1 EDT}
-    {467791200 -18000 0 EST}
-    {483519600 -14400 1 EDT}
-    {499240800 -18000 0 EST}
-    {514969200 -14400 1 EDT}
-    {530690400 -18000 0 EST}
-    {544604400 -14400 1 EDT}
-    {562140000 -18000 0 EST}
-    {576054000 -14400 1 EDT}
-    {594194400 -18000 0 EST}
-    {607503600 -14400 1 EDT}
-    {625644000 -18000 0 EST}
-    {638953200 -14400 1 EDT}
-    {657093600 -18000 0 EST}
-    {671007600 -14400 1 EDT}
-    {688543200 -18000 0 EST}
-    {702457200 -14400 1 EDT}
-    {719992800 -18000 0 EST}
-    {733906800 -14400 1 EDT}
-    {752047200 -18000 0 EST}
-    {765356400 -14400 1 EDT}
-    {783496800 -18000 0 EST}
-    {796806000 -14400 1 EDT}
-    {814946400 -18000 0 EST}
-    {828860400 -14400 1 EDT}
-    {846396000 -18000 0 EST}
-    {860310000 -14400 1 EDT}
-    {877845600 -18000 0 EST}
-    {891759600 -14400 1 EDT}
-    {909295200 -18000 0 EST}
-    {923209200 -14400 1 EDT}
-    {941349600 -18000 0 EST}
-    {954658800 -14400 1 EDT}
-    {972799200 -18000 0 EST}
-    {986108400 -14400 1 EDT}
-    {1004248800 -18000 0 EST}
-    {1018162800 -14400 1 EDT}
-    {1035698400 -18000 0 EST}
-    {1049612400 -14400 1 EDT}
-    {1067148000 -18000 0 EST}
-    {1081062000 -14400 1 EDT}
-    {1099202400 -18000 0 EST}
-    {1112511600 -14400 1 EDT}
-    {1130652000 -18000 0 EST}
-    {1143961200 -14400 1 EDT}
-    {1162101600 -18000 0 EST}
-    {1173596400 -14400 1 EDT}
-    {1194156000 -18000 0 EST}
-    {1205046000 -14400 1 EDT}
-    {1225605600 -18000 0 EST}
-    {1236495600 -14400 1 EDT}
-    {1257055200 -18000 0 EST}
-    {1268550000 -14400 1 EDT}
-    {1289109600 -18000 0 EST}
-    {1299999600 -14400 1 EDT}
-    {1320559200 -18000 0 EST}
-    {1331449200 -14400 1 EDT}
-    {1352008800 -18000 0 EST}
-    {1362898800 -14400 1 EDT}
-    {1383458400 -18000 0 EST}
-    {1394348400 -14400 1 EDT}
-    {1414908000 -18000 0 EST}
-    {1425798000 -14400 1 EDT}
-    {1446357600 -18000 0 EST}
-    {1457852400 -14400 1 EDT}
-    {1478412000 -18000 0 EST}
-    {1489302000 -14400 1 EDT}
-    {1509861600 -18000 0 EST}
-    {1520751600 -14400 1 EDT}
-    {1541311200 -18000 0 EST}
-    {1552201200 -14400 1 EDT}
-    {1572760800 -18000 0 EST}
-    {1583650800 -14400 1 EDT}
-    {1604210400 -18000 0 EST}
-    {1615705200 -14400 1 EDT}
-    {1636264800 -18000 0 EST}
-    {1647154800 -14400 1 EDT}
-    {1667714400 -18000 0 EST}
-    {1678604400 -14400 1 EDT}
-    {1699164000 -18000 0 EST}
-    {1710054000 -14400 1 EDT}
-    {1730613600 -18000 0 EST}
-    {1741503600 -14400 1 EDT}
-    {1762063200 -18000 0 EST}
-    {1772953200 -14400 1 EDT}
-    {1793512800 -18000 0 EST}
-    {1805007600 -14400 1 EDT}
-    {1825567200 -18000 0 EST}
-    {1836457200 -14400 1 EDT}
-    {1857016800 -18000 0 EST}
-    {1867906800 -14400 1 EDT}
-    {1888466400 -18000 0 EST}
-    {1899356400 -14400 1 EDT}
-    {1919916000 -18000 0 EST}
-    {1930806000 -14400 1 EDT}
-    {1951365600 -18000 0 EST}
-    {1962860400 -14400 1 EDT}
-    {1983420000 -18000 0 EST}
-    {1994310000 -14400 1 EDT}
-    {2014869600 -18000 0 EST}
-    {2025759600 -14400 1 EDT}
-    {2046319200 -18000 0 EST}
-    {2057209200 -14400 1 EDT}
-    {2077768800 -18000 0 EST}
-    {2088658800 -14400 1 EDT}
-    {2109218400 -18000 0 EST}
-    {2120108400 -14400 1 EDT}
-    {2140668000 -18000 0 EST}
-    {2152162800 -14400 1 EDT}
-    {2172722400 -18000 0 EST}
-    {2183612400 -14400 1 EDT}
-    {2204172000 -18000 0 EST}
-    {2215062000 -14400 1 EDT}
-    {2235621600 -18000 0 EST}
-    {2246511600 -14400 1 EDT}
-    {2267071200 -18000 0 EST}
-    {2277961200 -14400 1 EDT}
-    {2298520800 -18000 0 EST}
-    {2309410800 -14400 1 EDT}
-    {2329970400 -18000 0 EST}
-    {2341465200 -14400 1 EDT}
-    {2362024800 -18000 0 EST}
-    {2372914800 -14400 1 EDT}
-    {2393474400 -18000 0 EST}
-    {2404364400 -14400 1 EDT}
-    {2424924000 -18000 0 EST}
-    {2435814000 -14400 1 EDT}
-    {2456373600 -18000 0 EST}
-    {2467263600 -14400 1 EDT}
-    {2487823200 -18000 0 EST}
-    {2499318000 -14400 1 EDT}
-    {2519877600 -18000 0 EST}
-    {2530767600 -14400 1 EDT}
-    {2551327200 -18000 0 EST}
-    {2562217200 -14400 1 EDT}
-    {2582776800 -18000 0 EST}
-    {2593666800 -14400 1 EDT}
-    {2614226400 -18000 0 EST}
-    {2625116400 -14400 1 EDT}
-    {2645676000 -18000 0 EST}
-    {2656566000 -14400 1 EDT}
-    {2677125600 -18000 0 EST}
-    {2688620400 -14400 1 EDT}
-    {2709180000 -18000 0 EST}
-    {2720070000 -14400 1 EDT}
-    {2740629600 -18000 0 EST}
-    {2751519600 -14400 1 EDT}
-    {2772079200 -18000 0 EST}
-    {2782969200 -14400 1 EDT}
-    {2803528800 -18000 0 EST}
-    {2814418800 -14400 1 EDT}
-    {2834978400 -18000 0 EST}
-    {2846473200 -14400 1 EDT}
-    {2867032800 -18000 0 EST}
-    {2877922800 -14400 1 EDT}
-    {2898482400 -18000 0 EST}
-    {2909372400 -14400 1 EDT}
-    {2929932000 -18000 0 EST}
-    {2940822000 -14400 1 EDT}
-    {2961381600 -18000 0 EST}
-    {2972271600 -14400 1 EDT}
-    {2992831200 -18000 0 EST}
-    {3003721200 -14400 1 EDT}
-    {3024280800 -18000 0 EST}
-    {3035775600 -14400 1 EDT}
-    {3056335200 -18000 0 EST}
-    {3067225200 -14400 1 EDT}
-    {3087784800 -18000 0 EST}
-    {3098674800 -14400 1 EDT}
-    {3119234400 -18000 0 EST}
-    {3130124400 -14400 1 EDT}
-    {3150684000 -18000 0 EST}
-    {3161574000 -14400 1 EDT}
-    {3182133600 -18000 0 EST}
-    {3193023600 -14400 1 EDT}
-    {3213583200 -18000 0 EST}
-    {3225078000 -14400 1 EDT}
-    {3245637600 -18000 0 EST}
-    {3256527600 -14400 1 EDT}
-    {3277087200 -18000 0 EST}
-    {3287977200 -14400 1 EDT}
-    {3308536800 -18000 0 EST}
-    {3319426800 -14400 1 EDT}
-    {3339986400 -18000 0 EST}
-    {3350876400 -14400 1 EDT}
-    {3371436000 -18000 0 EST}
-    {3382930800 -14400 1 EDT}
-    {3403490400 -18000 0 EST}
-    {3414380400 -14400 1 EDT}
-    {3434940000 -18000 0 EST}
-    {3445830000 -14400 1 EDT}
-    {3466389600 -18000 0 EST}
-    {3477279600 -14400 1 EDT}
-    {3497839200 -18000 0 EST}
-    {3508729200 -14400 1 EDT}
-    {3529288800 -18000 0 EST}
-    {3540178800 -14400 1 EDT}
-    {3560738400 -18000 0 EST}
-    {3572233200 -14400 1 EDT}
-    {3592792800 -18000 0 EST}
-    {3603682800 -14400 1 EDT}
-    {3624242400 -18000 0 EST}
-    {3635132400 -14400 1 EDT}
-    {3655692000 -18000 0 EST}
-    {3666582000 -14400 1 EDT}
-    {3687141600 -18000 0 EST}
-    {3698031600 -14400 1 EDT}
-    {3718591200 -18000 0 EST}
-    {3730086000 -14400 1 EDT}
-    {3750645600 -18000 0 EST}
-    {3761535600 -14400 1 EDT}
-    {3782095200 -18000 0 EST}
-    {3792985200 -14400 1 EDT}
-    {3813544800 -18000 0 EST}
-    {3824434800 -14400 1 EDT}
-    {3844994400 -18000 0 EST}
-    {3855884400 -14400 1 EDT}
-    {3876444000 -18000 0 EST}
-    {3887334000 -14400 1 EDT}
-    {3907893600 -18000 0 EST}
-    {3919388400 -14400 1 EDT}
-    {3939948000 -18000 0 EST}
-    {3950838000 -14400 1 EDT}
-    {3971397600 -18000 0 EST}
-    {3982287600 -14400 1 EDT}
-    {4002847200 -18000 0 EST}
-    {4013737200 -14400 1 EDT}
-    {4034296800 -18000 0 EST}
-    {4045186800 -14400 1 EDT}
-    {4065746400 -18000 0 EST}
-    {4076636400 -14400 1 EDT}
-    {4097196000 -18000 0 EST}
+if {![info exists TZData(America/Toronto)]} {
+    LoadTimeZoneFile America/Toronto
 }
+set TZData(:America/Nassau) $TZData(:America/Toronto)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port_of_Spain
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port_of_Spain	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port_of_Spain	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,6 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:America/Port_of_Spain) {
-    {-9223372036854775808 -14764 0 LMT}
-    {-1825098836 -14400 0 AST}
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
+set TZData(:America/Port_of_Spain) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Barthelemy
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Barthelemy	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Barthelemy	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/St_Barthelemy) $TZData(:America/Port_of_Spain)
+set TZData(:America/St_Barthelemy) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Kitts
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Kitts	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Kitts	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/St_Kitts) $TZData(:America/Port_of_Spain)
+set TZData(:America/St_Kitts) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Lucia
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Lucia	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Lucia	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/St_Lucia) $TZData(:America/Port_of_Spain)
+set TZData(:America/St_Lucia) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Thomas
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Thomas	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Thomas	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/St_Thomas) $TZData(:America/Port_of_Spain)
+set TZData(:America/St_Thomas) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Vincent
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Vincent	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Vincent	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/St_Vincent) $TZData(:America/Port_of_Spain)
+set TZData(:America/St_Vincent) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tortola
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tortola	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tortola	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Tortola) $TZData(:America/Port_of_Spain)
+set TZData(:America/Tortola) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Virgin
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Virgin	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Virgin	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,5 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-if {![info exists TZData(America/Port_of_Spain)]} {
-    LoadTimeZoneFile America/Port_of_Spain
+if {![info exists TZData(America/Puerto_Rico)]} {
+    LoadTimeZoneFile America/Puerto_Rico
 }
-set TZData(:America/Virgin) $TZData(:America/Port_of_Spain)
+set TZData(:America/Virgin) $TZData(:America/Puerto_Rico)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/DumontDUrville
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/DumontDUrville	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/DumontDUrville	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,8 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Antarctica/DumontDUrville) {
-    {-9223372036854775808 0 0 -00}
-    {-725846400 36000 0 +10}
-    {-566992800 0 0 -00}
-    {-415497600 36000 0 +10}
+if {![info exists TZData(Pacific/Port_Moresby)]} {
+    LoadTimeZoneFile Pacific/Port_Moresby
 }
+set TZData(:Antarctica/DumontDUrville) $TZData(:Pacific/Port_Moresby)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Syowa
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Syowa	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Syowa	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,6 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Antarctica/Syowa) {
-    {-9223372036854775808 0 0 -00}
-    {-407808000 10800 0 +03}
+if {![info exists TZData(Asia/Riyadh)]} {
+    LoadTimeZoneFile Asia/Riyadh
 }
+set TZData(:Antarctica/Syowa) $TZData(:Asia/Riyadh)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Amman
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Amman	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Amman	2022-03-14 10:03:11 UTC (rev 62700)
@@ -87,160 +87,160 @@
     {1604008800 7200 0 EET}
     {1616709600 10800 1 EEST}
     {1635458400 7200 0 EET}
-    {1648764000 10800 1 EEST}
+    {1645740000 10800 1 EEST}
     {1666908000 7200 0 EET}
-    {1680213600 10800 1 EEST}
+    {1677189600 10800 1 EEST}
     {1698357600 7200 0 EET}
-    {1711663200 10800 1 EEST}
+    {1709244000 10800 1 EEST}
     {1729807200 7200 0 EET}
-    {1743112800 10800 1 EEST}
+    {1740693600 10800 1 EEST}
     {1761861600 7200 0 EET}
-    {1774562400 10800 1 EEST}
+    {1772143200 10800 1 EEST}
     {1793311200 7200 0 EET}
-    {1806012000 10800 1 EEST}
+    {1803592800 10800 1 EEST}
     {1824760800 7200 0 EET}
-    {1838066400 10800 1 EEST}
+    {1835042400 10800 1 EEST}
     {1856210400 7200 0 EET}
-    {1869516000 10800 1 EEST}
+    {1866492000 10800 1 EEST}
     {1887660000 7200 0 EET}
-    {1900965600 10800 1 EEST}
+    {1898546400 10800 1 EEST}
     {1919109600 7200 0 EET}
-    {1932415200 10800 1 EEST}
+    {1929996000 10800 1 EEST}
     {1951164000 7200 0 EET}
-    {1963864800 10800 1 EEST}
+    {1961445600 10800 1 EEST}
     {1982613600 7200 0 EET}
-    {1995919200 10800 1 EEST}
+    {1992895200 10800 1 EEST}
     {2014063200 7200 0 EET}
-    {2027368800 10800 1 EEST}
+    {2024344800 10800 1 EEST}
     {2045512800 7200 0 EET}
-    {2058818400 10800 1 EEST}
+    {2055794400 10800 1 EEST}
     {2076962400 7200 0 EET}
-    {2090268000 10800 1 EEST}
+    {2087848800 10800 1 EEST}
     {2109016800 7200 0 EET}
-    {2121717600 10800 1 EEST}
+    {2119298400 10800 1 EEST}
     {2140466400 7200 0 EET}
-    {2153167200 10800 1 EEST}
+    {2150748000 10800 1 EEST}
     {2171916000 7200 0 EET}
-    {2185221600 10800 1 EEST}
+    {2182197600 10800 1 EEST}
     {2203365600 7200 0 EET}
-    {2216671200 10800 1 EEST}
+    {2213647200 10800 1 EEST}
     {2234815200 7200 0 EET}
-    {2248120800 10800 1 EEST}
+    {2245701600 10800 1 EEST}
     {2266264800 7200 0 EET}
-    {2279570400 10800 1 EEST}
+    {2277151200 10800 1 EEST}
     {2298319200 7200 0 EET}
-    {2311020000 10800 1 EEST}
+    {2308600800 10800 1 EEST}
     {2329768800 7200 0 EET}
-    {2343074400 10800 1 EEST}
+    {2340050400 10800 1 EEST}
     {2361218400 7200 0 EET}
-    {2374524000 10800 1 EEST}
+    {2371500000 10800 1 EEST}
     {2392668000 7200 0 EET}
-    {2405973600 10800 1 EEST}
+    {2402949600 10800 1 EEST}
     {2424117600 7200 0 EET}
-    {2437423200 10800 1 EEST}
+    {2435004000 10800 1 EEST}
     {2455567200 7200 0 EET}
-    {2468872800 10800 1 EEST}
+    {2466453600 10800 1 EEST}
     {2487621600 7200 0 EET}
-    {2500322400 10800 1 EEST}
+    {2497903200 10800 1 EEST}
     {2519071200 7200 0 EET}
-    {2532376800 10800 1 EEST}
+    {2529352800 10800 1 EEST}
     {2550520800 7200 0 EET}
-    {2563826400 10800 1 EEST}
+    {2560802400 10800 1 EEST}
     {2581970400 7200 0 EET}
-    {2595276000 10800 1 EEST}
+    {2592856800 10800 1 EEST}
     {2613420000 7200 0 EET}
-    {2626725600 10800 1 EEST}
+    {2624306400 10800 1 EEST}
     {2645474400 7200 0 EET}
-    {2658175200 10800 1 EEST}
+    {2655756000 10800 1 EEST}
     {2676924000 7200 0 EET}
-    {2689624800 10800 1 EEST}
+    {2687205600 10800 1 EEST}
     {2708373600 7200 0 EET}
-    {2721679200 10800 1 EEST}
+    {2718655200 10800 1 EEST}
     {2739823200 7200 0 EET}
-    {2753128800 10800 1 EEST}
+    {2750104800 10800 1 EEST}
     {2771272800 7200 0 EET}
-    {2784578400 10800 1 EEST}
+    {2782159200 10800 1 EEST}
     {2802722400 7200 0 EET}
-    {2816028000 10800 1 EEST}
+    {2813608800 10800 1 EEST}
     {2834776800 7200 0 EET}
-    {2847477600 10800 1 EEST}
+    {2845058400 10800 1 EEST}
     {2866226400 7200 0 EET}
-    {2879532000 10800 1 EEST}
+    {2876508000 10800 1 EEST}
     {2897676000 7200 0 EET}
-    {2910981600 10800 1 EEST}
+    {2907957600 10800 1 EEST}
     {2929125600 7200 0 EET}
-    {2942431200 10800 1 EEST}
+    {2939407200 10800 1 EEST}
     {2960575200 7200 0 EET}
-    {2973880800 10800 1 EEST}
+    {2971461600 10800 1 EEST}
     {2992629600 7200 0 EET}
-    {3005330400 10800 1 EEST}
+    {3002911200 10800 1 EEST}
     {3024079200 7200 0 EET}
-    {3036780000 10800 1 EEST}
+    {3034360800 10800 1 EEST}
     {3055528800 7200 0 EET}
-    {3068834400 10800 1 EEST}
+    {3065810400 10800 1 EEST}
     {3086978400 7200 0 EET}
-    {3100284000 10800 1 EEST}
+    {3097260000 10800 1 EEST}
     {3118428000 7200 0 EET}
-    {3131733600 10800 1 EEST}
+    {3129314400 10800 1 EEST}
     {3149877600 7200 0 EET}
-    {3163183200 10800 1 EEST}
+    {3160764000 10800 1 EEST}
     {3181932000 7200 0 EET}
-    {3194632800 10800 1 EEST}
+    {3192213600 10800 1 EEST}
     {3213381600 7200 0 EET}
-    {3226687200 10800 1 EEST}
+    {3223663200 10800 1 EEST}
     {3244831200 7200 0 EET}
-    {3258136800 10800 1 EEST}
+    {3255112800 10800 1 EEST}
     {3276280800 7200 0 EET}
-    {3289586400 10800 1 EEST}
+    {3286562400 10800 1 EEST}
     {3307730400 7200 0 EET}
-    {3321036000 10800 1 EEST}
+    {3318616800 10800 1 EEST}
     {3339180000 7200 0 EET}
-    {3352485600 10800 1 EEST}
+    {3350066400 10800 1 EEST}
     {3371234400 7200 0 EET}
-    {3383935200 10800 1 EEST}
+    {3381516000 10800 1 EEST}
     {3402684000 7200 0 EET}
-    {3415989600 10800 1 EEST}
+    {3412965600 10800 1 EEST}
     {3434133600 7200 0 EET}
-    {3447439200 10800 1 EEST}
+    {3444415200 10800 1 EEST}
     {3465583200 7200 0 EET}
-    {3478888800 10800 1 EEST}
+    {3476469600 10800 1 EEST}
     {3497032800 7200 0 EET}
-    {3510338400 10800 1 EEST}
+    {3507919200 10800 1 EEST}
     {3529087200 7200 0 EET}
-    {3541788000 10800 1 EEST}
+    {3539368800 10800 1 EEST}
     {3560536800 7200 0 EET}
-    {3573237600 10800 1 EEST}
+    {3570818400 10800 1 EEST}
     {3591986400 7200 0 EET}
-    {3605292000 10800 1 EEST}
+    {3602268000 10800 1 EEST}
     {3623436000 7200 0 EET}
-    {3636741600 10800 1 EEST}
+    {3633717600 10800 1 EEST}
     {3654885600 7200 0 EET}
-    {3668191200 10800 1 EEST}
+    {3665772000 10800 1 EEST}
     {3686335200 7200 0 EET}
-    {3699640800 10800 1 EEST}
+    {3697221600 10800 1 EEST}
     {3718389600 7200 0 EET}
-    {3731090400 10800 1 EEST}
+    {3728671200 10800 1 EEST}
     {3749839200 7200 0 EET}
-    {3763144800 10800 1 EEST}
+    {3760120800 10800 1 EEST}
     {3781288800 7200 0 EET}
-    {3794594400 10800 1 EEST}
+    {3791570400 10800 1 EEST}
     {3812738400 7200 0 EET}
-    {3826044000 10800 1 EEST}
+    {3823020000 10800 1 EEST}
     {3844188000 7200 0 EET}
-    {3857493600 10800 1 EEST}
+    {3855074400 10800 1 EEST}
     {3876242400 7200 0 EET}
-    {3888943200 10800 1 EEST}
+    {3886524000 10800 1 EEST}
     {3907692000 7200 0 EET}
-    {3920392800 10800 1 EEST}
+    {3917973600 10800 1 EEST}
     {3939141600 7200 0 EET}
-    {3952447200 10800 1 EEST}
+    {3949423200 10800 1 EEST}
     {3970591200 7200 0 EET}
-    {3983896800 10800 1 EEST}
+    {3980872800 10800 1 EEST}
     {4002040800 7200 0 EET}
-    {4015346400 10800 1 EEST}
+    {4012927200 10800 1 EEST}
     {4033490400 7200 0 EET}
-    {4046796000 10800 1 EEST}
+    {4044376800 10800 1 EEST}
     {4065544800 7200 0 EET}
-    {4078245600 10800 1 EEST}
+    {4075826400 10800 1 EEST}
     {4096994400 7200 0 EET}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Gaza
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Gaza	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Gaza	2022-03-14 10:03:11 UTC (rev 62700)
@@ -124,161 +124,161 @@
     {1585346400 10800 1 EEST}
     {1603490400 7200 0 EET}
     {1616796000 10800 1 EEST}
-    {1635544800 7200 0 EET}
+    {1635458400 7200 0 EET}
     {1648245600 10800 1 EEST}
-    {1666994400 7200 0 EET}
+    {1666908000 7200 0 EET}
     {1679695200 10800 1 EEST}
-    {1698444000 7200 0 EET}
+    {1698357600 7200 0 EET}
     {1711749600 10800 1 EEST}
-    {1729893600 7200 0 EET}
+    {1729807200 7200 0 EET}
     {1743199200 10800 1 EEST}
-    {1761343200 7200 0 EET}
+    {1761861600 7200 0 EET}
     {1774648800 10800 1 EEST}
-    {1792792800 7200 0 EET}
+    {1793311200 7200 0 EET}
     {1806098400 10800 1 EEST}
-    {1824847200 7200 0 EET}
+    {1824760800 7200 0 EET}
     {1837548000 10800 1 EEST}
-    {1856296800 7200 0 EET}
+    {1856210400 7200 0 EET}
     {1868997600 10800 1 EEST}
-    {1887746400 7200 0 EET}
+    {1887660000 7200 0 EET}
     {1901052000 10800 1 EEST}
-    {1919196000 7200 0 EET}
+    {1919109600 7200 0 EET}
     {1932501600 10800 1 EEST}
-    {1950645600 7200 0 EET}
+    {1951164000 7200 0 EET}
     {1963951200 10800 1 EEST}
-    {1982700000 7200 0 EET}
+    {1982613600 7200 0 EET}
     {1995400800 10800 1 EEST}
-    {2014149600 7200 0 EET}
+    {2014063200 7200 0 EET}
     {2026850400 10800 1 EEST}
-    {2045599200 7200 0 EET}
+    {2045512800 7200 0 EET}
     {2058300000 10800 1 EEST}
-    {2077048800 7200 0 EET}
+    {2076962400 7200 0 EET}
     {2090354400 10800 1 EEST}
-    {2108498400 7200 0 EET}
+    {2109016800 7200 0 EET}
     {2121804000 10800 1 EEST}
-    {2139948000 7200 0 EET}
+    {2140466400 7200 0 EET}
     {2153253600 10800 1 EEST}
-    {2172002400 7200 0 EET}
+    {2171916000 7200 0 EET}
     {2184703200 10800 1 EEST}
-    {2203452000 7200 0 EET}
+    {2203365600 7200 0 EET}
     {2216152800 10800 1 EEST}
-    {2234901600 7200 0 EET}
+    {2234815200 7200 0 EET}
     {2248207200 10800 1 EEST}
-    {2266351200 7200 0 EET}
+    {2266264800 7200 0 EET}
     {2279656800 10800 1 EEST}
-    {2297800800 7200 0 EET}
+    {2298319200 7200 0 EET}
     {2311106400 10800 1 EEST}
-    {2329250400 7200 0 EET}
+    {2329768800 7200 0 EET}
     {2342556000 10800 1 EEST}
-    {2361304800 7200 0 EET}
+    {2361218400 7200 0 EET}
     {2374005600 10800 1 EEST}
-    {2392754400 7200 0 EET}
+    {2392668000 7200 0 EET}
     {2405455200 10800 1 EEST}
-    {2424204000 7200 0 EET}
+    {2424117600 7200 0 EET}
     {2437509600 10800 1 EEST}
-    {2455653600 7200 0 EET}
+    {2455567200 7200 0 EET}
     {2468959200 10800 1 EEST}
-    {2487103200 7200 0 EET}
+    {2487621600 7200 0 EET}
     {2500408800 10800 1 EEST}
-    {2519157600 7200 0 EET}
+    {2519071200 7200 0 EET}
     {2531858400 10800 1 EEST}
-    {2550607200 7200 0 EET}
+    {2550520800 7200 0 EET}
     {2563308000 10800 1 EEST}
-    {2582056800 7200 0 EET}
+    {2581970400 7200 0 EET}
     {2595362400 10800 1 EEST}
-    {2613506400 7200 0 EET}
+    {2613420000 7200 0 EET}
     {2626812000 10800 1 EEST}
-    {2644956000 7200 0 EET}
+    {2645474400 7200 0 EET}
     {2658261600 10800 1 EEST}
-    {2676405600 7200 0 EET}
+    {2676924000 7200 0 EET}
     {2689711200 10800 1 EEST}
-    {2708460000 7200 0 EET}
+    {2708373600 7200 0 EET}
     {2721160800 10800 1 EEST}
-    {2739909600 7200 0 EET}
+    {2739823200 7200 0 EET}
     {2752610400 10800 1 EEST}
-    {2771359200 7200 0 EET}
+    {2771272800 7200 0 EET}
     {2784664800 10800 1 EEST}
-    {2802808800 7200 0 EET}
+    {2802722400 7200 0 EET}
     {2816114400 10800 1 EEST}
-    {2834258400 7200 0 EET}
+    {2834776800 7200 0 EET}
     {2847564000 10800 1 EEST}
-    {2866312800 7200 0 EET}
+    {2866226400 7200 0 EET}
     {2879013600 10800 1 EEST}
-    {2897762400 7200 0 EET}
+    {2897676000 7200 0 EET}
     {2910463200 10800 1 EEST}
-    {2929212000 7200 0 EET}
+    {2929125600 7200 0 EET}
     {2941912800 10800 1 EEST}
-    {2960661600 7200 0 EET}
+    {2960575200 7200 0 EET}
     {2973967200 10800 1 EEST}
-    {2992111200 7200 0 EET}
+    {2992629600 7200 0 EET}
     {3005416800 10800 1 EEST}
-    {3023560800 7200 0 EET}
+    {3024079200 7200 0 EET}
     {3036866400 10800 1 EEST}
-    {3055615200 7200 0 EET}
+    {3055528800 7200 0 EET}
     {3068316000 10800 1 EEST}
-    {3087064800 7200 0 EET}
+    {3086978400 7200 0 EET}
     {3099765600 10800 1 EEST}
-    {3118514400 7200 0 EET}
+    {3118428000 7200 0 EET}
     {3131820000 10800 1 EEST}
-    {3149964000 7200 0 EET}
+    {3149877600 7200 0 EET}
     {3163269600 10800 1 EEST}
-    {3181413600 7200 0 EET}
+    {3181932000 7200 0 EET}
     {3194719200 10800 1 EEST}
-    {3212863200 7200 0 EET}
+    {3213381600 7200 0 EET}
     {3226168800 10800 1 EEST}
-    {3244917600 7200 0 EET}
+    {3244831200 7200 0 EET}
     {3257618400 10800 1 EEST}
-    {3276367200 7200 0 EET}
+    {3276280800 7200 0 EET}
     {3289068000 10800 1 EEST}
-    {3307816800 7200 0 EET}
+    {3307730400 7200 0 EET}
     {3321122400 10800 1 EEST}
-    {3339266400 7200 0 EET}
+    {3339180000 7200 0 EET}
     {3352572000 10800 1 EEST}
-    {3370716000 7200 0 EET}
+    {3371234400 7200 0 EET}
     {3384021600 10800 1 EEST}
-    {3402770400 7200 0 EET}
+    {3402684000 7200 0 EET}
     {3415471200 10800 1 EEST}
-    {3434220000 7200 0 EET}
+    {3434133600 7200 0 EET}
     {3446920800 10800 1 EEST}
-    {3465669600 7200 0 EET}
+    {3465583200 7200 0 EET}
     {3478975200 10800 1 EEST}
-    {3497119200 7200 0 EET}
+    {3497032800 7200 0 EET}
     {3510424800 10800 1 EEST}
-    {3528568800 7200 0 EET}
+    {3529087200 7200 0 EET}
     {3541874400 10800 1 EEST}
-    {3560018400 7200 0 EET}
+    {3560536800 7200 0 EET}
     {3573324000 10800 1 EEST}
-    {3592072800 7200 0 EET}
+    {3591986400 7200 0 EET}
     {3604773600 10800 1 EEST}
-    {3623522400 7200 0 EET}
+    {3623436000 7200 0 EET}
     {3636223200 10800 1 EEST}
-    {3654972000 7200 0 EET}
+    {3654885600 7200 0 EET}
     {3668277600 10800 1 EEST}
-    {3686421600 7200 0 EET}
+    {3686335200 7200 0 EET}
     {3699727200 10800 1 EEST}
-    {3717871200 7200 0 EET}
+    {3718389600 7200 0 EET}
     {3731176800 10800 1 EEST}
-    {3749925600 7200 0 EET}
+    {3749839200 7200 0 EET}
     {3762626400 10800 1 EEST}
-    {3781375200 7200 0 EET}
+    {3781288800 7200 0 EET}
     {3794076000 10800 1 EEST}
-    {3812824800 7200 0 EET}
+    {3812738400 7200 0 EET}
     {3825525600 10800 1 EEST}
-    {3844274400 7200 0 EET}
+    {3844188000 7200 0 EET}
     {3857580000 10800 1 EEST}
-    {3875724000 7200 0 EET}
+    {3876242400 7200 0 EET}
     {3889029600 10800 1 EEST}
-    {3907173600 7200 0 EET}
+    {3907692000 7200 0 EET}
     {3920479200 10800 1 EEST}
-    {3939228000 7200 0 EET}
+    {3939141600 7200 0 EET}
     {3951928800 10800 1 EEST}
-    {3970677600 7200 0 EET}
+    {3970591200 7200 0 EET}
     {3983378400 10800 1 EEST}
-    {4002127200 7200 0 EET}
+    {4002040800 7200 0 EET}
     {4015432800 10800 1 EEST}
-    {4033576800 7200 0 EET}
+    {4033490400 7200 0 EET}
     {4046882400 10800 1 EEST}
-    {4065026400 7200 0 EET}
+    {4065544800 7200 0 EET}
     {4078332000 10800 1 EEST}
-    {4096476000 7200 0 EET}
+    {4096994400 7200 0 EET}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hebron
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hebron	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hebron	2022-03-14 10:03:11 UTC (rev 62700)
@@ -123,161 +123,161 @@
     {1585346400 10800 1 EEST}
     {1603490400 7200 0 EET}
     {1616796000 10800 1 EEST}
-    {1635544800 7200 0 EET}
+    {1635458400 7200 0 EET}
     {1648245600 10800 1 EEST}
-    {1666994400 7200 0 EET}
+    {1666908000 7200 0 EET}
     {1679695200 10800 1 EEST}
-    {1698444000 7200 0 EET}
+    {1698357600 7200 0 EET}
     {1711749600 10800 1 EEST}
-    {1729893600 7200 0 EET}
+    {1729807200 7200 0 EET}
     {1743199200 10800 1 EEST}
-    {1761343200 7200 0 EET}
+    {1761861600 7200 0 EET}
     {1774648800 10800 1 EEST}
-    {1792792800 7200 0 EET}
+    {1793311200 7200 0 EET}
     {1806098400 10800 1 EEST}
-    {1824847200 7200 0 EET}
+    {1824760800 7200 0 EET}
     {1837548000 10800 1 EEST}
-    {1856296800 7200 0 EET}
+    {1856210400 7200 0 EET}
     {1868997600 10800 1 EEST}
-    {1887746400 7200 0 EET}
+    {1887660000 7200 0 EET}
     {1901052000 10800 1 EEST}
-    {1919196000 7200 0 EET}
+    {1919109600 7200 0 EET}
     {1932501600 10800 1 EEST}
-    {1950645600 7200 0 EET}
+    {1951164000 7200 0 EET}
     {1963951200 10800 1 EEST}
-    {1982700000 7200 0 EET}
+    {1982613600 7200 0 EET}
     {1995400800 10800 1 EEST}
-    {2014149600 7200 0 EET}
+    {2014063200 7200 0 EET}
     {2026850400 10800 1 EEST}
-    {2045599200 7200 0 EET}
+    {2045512800 7200 0 EET}
     {2058300000 10800 1 EEST}
-    {2077048800 7200 0 EET}
+    {2076962400 7200 0 EET}
     {2090354400 10800 1 EEST}
-    {2108498400 7200 0 EET}
+    {2109016800 7200 0 EET}
     {2121804000 10800 1 EEST}
-    {2139948000 7200 0 EET}
+    {2140466400 7200 0 EET}
     {2153253600 10800 1 EEST}
-    {2172002400 7200 0 EET}
+    {2171916000 7200 0 EET}
     {2184703200 10800 1 EEST}
-    {2203452000 7200 0 EET}
+    {2203365600 7200 0 EET}
     {2216152800 10800 1 EEST}
-    {2234901600 7200 0 EET}
+    {2234815200 7200 0 EET}
     {2248207200 10800 1 EEST}
-    {2266351200 7200 0 EET}
+    {2266264800 7200 0 EET}
     {2279656800 10800 1 EEST}
-    {2297800800 7200 0 EET}
+    {2298319200 7200 0 EET}
     {2311106400 10800 1 EEST}
-    {2329250400 7200 0 EET}
+    {2329768800 7200 0 EET}
     {2342556000 10800 1 EEST}
-    {2361304800 7200 0 EET}
+    {2361218400 7200 0 EET}
     {2374005600 10800 1 EEST}
-    {2392754400 7200 0 EET}
+    {2392668000 7200 0 EET}
     {2405455200 10800 1 EEST}
-    {2424204000 7200 0 EET}
+    {2424117600 7200 0 EET}
     {2437509600 10800 1 EEST}
-    {2455653600 7200 0 EET}
+    {2455567200 7200 0 EET}
     {2468959200 10800 1 EEST}
-    {2487103200 7200 0 EET}
+    {2487621600 7200 0 EET}
     {2500408800 10800 1 EEST}
-    {2519157600 7200 0 EET}
+    {2519071200 7200 0 EET}
     {2531858400 10800 1 EEST}
-    {2550607200 7200 0 EET}
+    {2550520800 7200 0 EET}
     {2563308000 10800 1 EEST}
-    {2582056800 7200 0 EET}
+    {2581970400 7200 0 EET}
     {2595362400 10800 1 EEST}
-    {2613506400 7200 0 EET}
+    {2613420000 7200 0 EET}
     {2626812000 10800 1 EEST}
-    {2644956000 7200 0 EET}
+    {2645474400 7200 0 EET}
     {2658261600 10800 1 EEST}
-    {2676405600 7200 0 EET}
+    {2676924000 7200 0 EET}
     {2689711200 10800 1 EEST}
-    {2708460000 7200 0 EET}
+    {2708373600 7200 0 EET}
     {2721160800 10800 1 EEST}
-    {2739909600 7200 0 EET}
+    {2739823200 7200 0 EET}
     {2752610400 10800 1 EEST}
-    {2771359200 7200 0 EET}
+    {2771272800 7200 0 EET}
     {2784664800 10800 1 EEST}
-    {2802808800 7200 0 EET}
+    {2802722400 7200 0 EET}
     {2816114400 10800 1 EEST}
-    {2834258400 7200 0 EET}
+    {2834776800 7200 0 EET}
     {2847564000 10800 1 EEST}
-    {2866312800 7200 0 EET}
+    {2866226400 7200 0 EET}
     {2879013600 10800 1 EEST}
-    {2897762400 7200 0 EET}
+    {2897676000 7200 0 EET}
     {2910463200 10800 1 EEST}
-    {2929212000 7200 0 EET}
+    {2929125600 7200 0 EET}
     {2941912800 10800 1 EEST}
-    {2960661600 7200 0 EET}
+    {2960575200 7200 0 EET}
     {2973967200 10800 1 EEST}
-    {2992111200 7200 0 EET}
+    {2992629600 7200 0 EET}
     {3005416800 10800 1 EEST}
-    {3023560800 7200 0 EET}
+    {3024079200 7200 0 EET}
     {3036866400 10800 1 EEST}
-    {3055615200 7200 0 EET}
+    {3055528800 7200 0 EET}
     {3068316000 10800 1 EEST}
-    {3087064800 7200 0 EET}
+    {3086978400 7200 0 EET}
     {3099765600 10800 1 EEST}
-    {3118514400 7200 0 EET}
+    {3118428000 7200 0 EET}
     {3131820000 10800 1 EEST}
-    {3149964000 7200 0 EET}
+    {3149877600 7200 0 EET}
     {3163269600 10800 1 EEST}
-    {3181413600 7200 0 EET}
+    {3181932000 7200 0 EET}
     {3194719200 10800 1 EEST}
-    {3212863200 7200 0 EET}
+    {3213381600 7200 0 EET}
     {3226168800 10800 1 EEST}
-    {3244917600 7200 0 EET}
+    {3244831200 7200 0 EET}
     {3257618400 10800 1 EEST}
-    {3276367200 7200 0 EET}
+    {3276280800 7200 0 EET}
     {3289068000 10800 1 EEST}
-    {3307816800 7200 0 EET}
+    {3307730400 7200 0 EET}
     {3321122400 10800 1 EEST}
-    {3339266400 7200 0 EET}
+    {3339180000 7200 0 EET}
     {3352572000 10800 1 EEST}
-    {3370716000 7200 0 EET}
+    {3371234400 7200 0 EET}
     {3384021600 10800 1 EEST}
-    {3402770400 7200 0 EET}
+    {3402684000 7200 0 EET}
     {3415471200 10800 1 EEST}
-    {3434220000 7200 0 EET}
+    {3434133600 7200 0 EET}
     {3446920800 10800 1 EEST}
-    {3465669600 7200 0 EET}
+    {3465583200 7200 0 EET}
     {3478975200 10800 1 EEST}
-    {3497119200 7200 0 EET}
+    {3497032800 7200 0 EET}
     {3510424800 10800 1 EEST}
-    {3528568800 7200 0 EET}
+    {3529087200 7200 0 EET}
     {3541874400 10800 1 EEST}
-    {3560018400 7200 0 EET}
+    {3560536800 7200 0 EET}
     {3573324000 10800 1 EEST}
-    {3592072800 7200 0 EET}
+    {3591986400 7200 0 EET}
     {3604773600 10800 1 EEST}
-    {3623522400 7200 0 EET}
+    {3623436000 7200 0 EET}
     {3636223200 10800 1 EEST}
-    {3654972000 7200 0 EET}
+    {3654885600 7200 0 EET}
     {3668277600 10800 1 EEST}
-    {3686421600 7200 0 EET}
+    {3686335200 7200 0 EET}
     {3699727200 10800 1 EEST}
-    {3717871200 7200 0 EET}
+    {3718389600 7200 0 EET}
     {3731176800 10800 1 EEST}
-    {3749925600 7200 0 EET}
+    {3749839200 7200 0 EET}
     {3762626400 10800 1 EEST}
-    {3781375200 7200 0 EET}
+    {3781288800 7200 0 EET}
     {3794076000 10800 1 EEST}
-    {3812824800 7200 0 EET}
+    {3812738400 7200 0 EET}
     {3825525600 10800 1 EEST}
-    {3844274400 7200 0 EET}
+    {3844188000 7200 0 EET}
     {3857580000 10800 1 EEST}
-    {3875724000 7200 0 EET}
+    {3876242400 7200 0 EET}
     {3889029600 10800 1 EEST}
-    {3907173600 7200 0 EET}
+    {3907692000 7200 0 EET}
     {3920479200 10800 1 EEST}
-    {3939228000 7200 0 EET}
+    {3939141600 7200 0 EET}
     {3951928800 10800 1 EEST}
-    {3970677600 7200 0 EET}
+    {3970591200 7200 0 EET}
     {3983378400 10800 1 EEST}
-    {4002127200 7200 0 EET}
+    {4002040800 7200 0 EET}
     {4015432800 10800 1 EEST}
-    {4033576800 7200 0 EET}
+    {4033490400 7200 0 EET}
     {4046882400 10800 1 EEST}
-    {4065026400 7200 0 EET}
+    {4065544800 7200 0 EET}
     {4078332000 10800 1 EEST}
-    {4096476000 7200 0 EET}
+    {4096994400 7200 0 EET}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Azores
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Azores	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Azores	2022-03-14 10:03:11 UTC (rev 62700)
@@ -66,6 +66,8 @@
     {-670449600 -7200 0 -02}
     {-654724800 -3600 1 -01}
     {-639000000 -7200 0 -02}
+    {-623275200 -3600 1 -01}
+    {-607550400 -7200 0 -02}
     {-591825600 -3600 1 -01}
     {-575496000 -7200 0 -02}
     {-559771200 -3600 1 -01}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Madeira
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Madeira	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Madeira	2022-03-14 10:03:11 UTC (rev 62700)
@@ -66,6 +66,8 @@
     {-670453200 -3600 0 -01}
     {-654728400 0 1 +00}
     {-639003600 -3600 0 -01}
+    {-623278800 0 1 +00}
+    {-607554000 -3600 0 -01}
     {-591829200 0 1 +00}
     {-575499600 -3600 0 -01}
     {-559774800 0 1 +00}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Lisbon
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Lisbon	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Lisbon	2022-03-14 10:03:11 UTC (rev 62700)
@@ -70,6 +70,8 @@
     {-670456800 0 0 WET}
     {-654732000 3600 1 WEST}
     {-639007200 0 0 WET}
+    {-623282400 3600 1 WEST}
+    {-607557600 0 0 WET}
     {-591832800 3600 1 WEST}
     {-575503200 0 0 WET}
     {-559778400 3600 1 WEST}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Apia
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Apia	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Apia	2022-03-14 10:03:11 UTC (rev 62700)
@@ -28,161 +28,4 @@
     {1586008800 46800 0 +13}
     {1601128800 50400 1 +13}
     {1617458400 46800 0 +13}
-    {1632578400 50400 1 +13}
-    {1648908000 46800 0 +13}
-    {1664028000 50400 1 +13}
-    {1680357600 46800 0 +13}
-    {1695477600 50400 1 +13}
-    {1712412000 46800 0 +13}
-    {1727532000 50400 1 +13}
-    {1743861600 46800 0 +13}
-    {1758981600 50400 1 +13}
-    {1775311200 46800 0 +13}
-    {1790431200 50400 1 +13}
-    {1806760800 46800 0 +13}
-    {1821880800 50400 1 +13}
-    {1838210400 46800 0 +13}
-    {1853330400 50400 1 +13}
-    {1869660000 46800 0 +13}
-    {1885384800 50400 1 +13}
-    {1901714400 46800 0 +13}
-    {1916834400 50400 1 +13}
-    {1933164000 46800 0 +13}
-    {1948284000 50400 1 +13}
-    {1964613600 46800 0 +13}
-    {1979733600 50400 1 +13}
-    {1996063200 46800 0 +13}
-    {2011183200 50400 1 +13}
-    {2027512800 46800 0 +13}
-    {2042632800 50400 1 +13}
-    {2058962400 46800 0 +13}
-    {2074687200 50400 1 +13}
-    {2091016800 46800 0 +13}
-    {2106136800 50400 1 +13}
-    {2122466400 46800 0 +13}
-    {2137586400 50400 1 +13}
-    {2153916000 46800 0 +13}
-    {2169036000 50400 1 +13}
-    {2185365600 46800 0 +13}
-    {2200485600 50400 1 +13}
-    {2216815200 46800 0 +13}
-    {2232540000 50400 1 +13}
-    {2248869600 46800 0 +13}
-    {2263989600 50400 1 +13}
-    {2280319200 46800 0 +13}
-    {2295439200 50400 1 +13}
-    {2311768800 46800 0 +13}
-    {2326888800 50400 1 +13}
-    {2343218400 46800 0 +13}
-    {2358338400 50400 1 +13}
-    {2374668000 46800 0 +13}
-    {2389788000 50400 1 +13}
-    {2406117600 46800 0 +13}
-    {2421842400 50400 1 +13}
-    {2438172000 46800 0 +13}
-    {2453292000 50400 1 +13}
-    {2469621600 46800 0 +13}
-    {2484741600 50400 1 +13}
-    {2501071200 46800 0 +13}
-    {2516191200 50400 1 +13}
-    {2532520800 46800 0 +13}
-    {2547640800 50400 1 +13}
-    {2563970400 46800 0 +13}
-    {2579090400 50400 1 +13}
-    {2596024800 46800 0 +13}
-    {2611144800 50400 1 +13}
-    {2627474400 46800 0 +13}
-    {2642594400 50400 1 +13}
-    {2658924000 46800 0 +13}
-    {2674044000 50400 1 +13}
-    {2690373600 46800 0 +13}
-    {2705493600 50400 1 +13}
-    {2721823200 46800 0 +13}
-    {2736943200 50400 1 +13}
-    {2753272800 46800 0 +13}
-    {2768997600 50400 1 +13}
-    {2785327200 46800 0 +13}
-    {2800447200 50400 1 +13}
-    {2816776800 46800 0 +13}
-    {2831896800 50400 1 +13}
-    {2848226400 46800 0 +13}
-    {2863346400 50400 1 +13}
-    {2879676000 46800 0 +13}
-    {2894796000 50400 1 +13}
-    {2911125600 46800 0 +13}
-    {2926245600 50400 1 +13}
-    {2942575200 46800 0 +13}
-    {2958300000 50400 1 +13}
-    {2974629600 46800 0 +13}
-    {2989749600 50400 1 +13}
-    {3006079200 46800 0 +13}
-    {3021199200 50400 1 +13}
-    {3037528800 46800 0 +13}
-    {3052648800 50400 1 +13}
-    {3068978400 46800 0 +13}
-    {3084098400 50400 1 +13}
-    {3100428000 46800 0 +13}
-    {3116152800 50400 1 +13}
-    {3132482400 46800 0 +13}
-    {3147602400 50400 1 +13}
-    {3163932000 46800 0 +13}
-    {3179052000 50400 1 +13}
-    {3195381600 46800 0 +13}
-    {3210501600 50400 1 +13}
-    {3226831200 46800 0 +13}
-    {3241951200 50400 1 +13}
-    {3258280800 46800 0 +13}
-    {3273400800 50400 1 +13}
-    {3289730400 46800 0 +13}
-    {3305455200 50400 1 +13}
-    {3321784800 46800 0 +13}
-    {3336904800 50400 1 +13}
-    {3353234400 46800 0 +13}
-    {3368354400 50400 1 +13}
-    {3384684000 46800 0 +13}
-    {3399804000 50400 1 +13}
-    {3416133600 46800 0 +13}
-    {3431253600 50400 1 +13}
-    {3447583200 46800 0 +13}
-    {3462703200 50400 1 +13}
-    {3479637600 46800 0 +13}
-    {3494757600 50400 1 +13}
-    {3511087200 46800 0 +13}
-    {3526207200 50400 1 +13}
-    {3542536800 46800 0 +13}
-    {3557656800 50400 1 +13}
-    {3573986400 46800 0 +13}
-    {3589106400 50400 1 +13}
-    {3605436000 46800 0 +13}
-    {3620556000 50400 1 +13}
-    {3636885600 46800 0 +13}
-    {3652610400 50400 1 +13}
-    {3668940000 46800 0 +13}
-    {3684060000 50400 1 +13}
-    {3700389600 46800 0 +13}
-    {3715509600 50400 1 +13}
-    {3731839200 46800 0 +13}
-    {3746959200 50400 1 +13}
-    {3763288800 46800 0 +13}
-    {3778408800 50400 1 +13}
-    {3794738400 46800 0 +13}
-    {3809858400 50400 1 +13}
-    {3826188000 46800 0 +13}
-    {3841912800 50400 1 +13}
-    {3858242400 46800 0 +13}
-    {3873362400 50400 1 +13}
-    {3889692000 46800 0 +13}
-    {3904812000 50400 1 +13}
-    {3921141600 46800 0 +13}
-    {3936261600 50400 1 +13}
-    {3952591200 46800 0 +13}
-    {3967711200 50400 1 +13}
-    {3984040800 46800 0 +13}
-    {3999765600 50400 1 +13}
-    {4016095200 46800 0 +13}
-    {4031215200 50400 1 +13}
-    {4047544800 46800 0 +13}
-    {4062664800 50400 1 +13}
-    {4078994400 46800 0 +13}
-    {4094114400 50400 1 +13}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Enderbury
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Enderbury	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Enderbury	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,8 +1,5 @@
 # created by tools/tclZIC.tcl - do not edit
-
-set TZData(:Pacific/Enderbury) {
-    {-9223372036854775808 -41060 0 LMT}
-    {-2177411740 -43200 0 -12}
-    {307627200 -39600 0 -11}
-    {788871600 46800 0 +13}
+if {![info exists TZData(Pacific/Kanton)]} {
+    LoadTimeZoneFile Pacific/Kanton
 }
+set TZData(:Pacific/Enderbury) $TZData(:Pacific/Kanton)

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fiji
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fiji	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fiji	2022-03-14 10:03:11 UTC (rev 62700)
@@ -31,8 +31,6 @@
     {1578751200 43200 0 +12}
     {1608386400 46800 1 +12}
     {1610805600 43200 0 +12}
-    {1636812000 46800 1 +12}
-    {1642255200 43200 0 +12}
     {1668261600 46800 1 +12}
     {1673704800 43200 0 +12}
     {1699711200 46800 1 +12}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kanton
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kanton	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kanton	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,8 @@
+# created by tools/tclZIC.tcl - do not edit
+
+set TZData(:Pacific/Kanton) {
+    {-9223372036854775808 0 0 -00}
+    {-1020470400 -43200 0 -12}
+    {307627200 -39600 0 -11}
+    {788871600 46800 0 +13}
+}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Niue
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Niue	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Niue	2022-03-14 10:03:11 UTC (rev 62700)
@@ -2,7 +2,6 @@
 
 set TZData(:Pacific/Niue) {
     {-9223372036854775808 -40780 0 LMT}
-    {-2177412020 -40800 0 -1120}
-    {-599575200 -41400 0 -1130}
-    {276089400 -39600 0 -11}
+    {-543069620 -40800 0 -1120}
+    {-173623200 -39600 0 -11}
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Rarotonga
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Rarotonga	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Rarotonga	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,8 +1,9 @@
 # created by tools/tclZIC.tcl - do not edit
 
 set TZData(:Pacific/Rarotonga) {
-    {-9223372036854775808 -38344 0 LMT}
-    {-2177414456 -37800 0 -1030}
+    {-9223372036854775808 48056 0 LMT}
+    {-2209555256 -38344 0 LMT}
+    {-543072056 -37800 0 -1030}
     {279714600 -34200 0 -10}
     {289387800 -36000 0 -10}
     {309952800 -34200 1 -10}

Modified: trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tongatapu
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tongatapu	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tongatapu	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,9 +1,9 @@
 # created by tools/tclZIC.tcl - do not edit
 
 set TZData(:Pacific/Tongatapu) {
-    {-9223372036854775808 44360 0 LMT}
-    {-2177497160 44400 0 +1220}
-    {-915193200 46800 0 +13}
+    {-9223372036854775808 44352 0 LMT}
+    {-767189952 44400 0 +1220}
+    {-284041200 46800 0 +13}
     {915102000 46800 0 +13}
     {939214800 50400 1 +13}
     {953384400 46800 0 +13}

Modified: trunk/Master/tlpkg/tltcl/lib/tclConfig.sh
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tclConfig.sh	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tclConfig.sh	2022-03-14 10:03:11 UTC (rev 62700)
@@ -15,13 +15,13 @@
 TCL_VERSION='8.6'
 TCL_MAJOR_VERSION='8'
 TCL_MINOR_VERSION='6'
-TCL_PATCH_LEVEL='.11'
+TCL_PATCH_LEVEL='.12'
 
 # C compiler to use for compilation.
 TCL_CC='i686-w64-mingw32-gcc'
 
 # -D flags for use with the C compiler.
-TCL_DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -DTCL_CFGVAL_ENCODING=\"cp1252\" -DMODULE_SCOPE=extern -DHAVE_NO_SEH=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_ZLIB=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_INTRIN_H=1 -DHAVE_WSPIAPI_H=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 '
+TCL_DEFS='-DPACKAGE_NAME=\"tcl\" -DPACKAGE_TARNAME=\"tcl\" -DPACKAGE_VERSION=\"8.6\" -DPACKAGE_STRING=\"tcl\ 8.6\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -DTCL_CFGVAL_ENCODING=\"cp1252\" -DMODULE_SCOPE=extern -DHAVE_NO_SEH=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_ZLIB=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_INTRIN_H=1 -DHAVE_WSPIAPI_H=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 '
 
 # If TCL was built with debugging symbols, generated libraries contain
 # this string at the end of the library name (before the extension).
@@ -55,11 +55,11 @@
 
 # Top-level directory in which Tcl's platform-independent files are
 # installed.
-TCL_PREFIX='/home/siepo/tltcl'
+TCL_PREFIX='/tmp/tltcl'
 
 # Top-level directory in which Tcl's platform-specific files (e.g.
 # executables) are installed.
-TCL_EXEC_PREFIX='/home/siepo/tltcl'
+TCL_EXEC_PREFIX='/tmp/tltcl'
 
 # Flags to pass to cc when compiling the components of a shared library:
 TCL_SHLIB_CFLAGS=''
@@ -111,15 +111,15 @@
 
 # String to pass to linker to pick up the Tcl library from its
 # build directory.
-TCL_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.11/win -ltcl86'
+TCL_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win -ltcl86'
 
 # String to pass to linker to pick up the Tcl library from its
 # installed directory.
-TCL_LIB_SPEC='-L/home/siepo/tltcl/lib -ltcl86'
+TCL_LIB_SPEC='-L/tmp/tltcl/lib -ltcl86'
 
 # String to pass to the compiler so that an extension can
 # find installed Tcl headers.
-TCL_INCLUDE_SPEC='-I/home/siepo/tltcl/include'
+TCL_INCLUDE_SPEC='-I/tmp/tltcl/include'
 
 # Indicates whether a version numbers should be used in -l switches
 # ("ok" means it's safe to use switches like -ltcl7.5;  "nodots" means
@@ -146,12 +146,12 @@
 # different place than the directory containing the source files, this
 # points to the location of the sources, not the location where Tcl was
 # compiled.
-TCL_SRC_DIR='/home/siepo/xdrive/tltcl/tcl8.6.11'
+TCL_SRC_DIR='/home/siepo/xdrive/tltcl/tcl8.6.12'
 
 # List of standard directories in which to look for packages during
 # "package require" commands.  Contains the "prefix" directory plus also
 # the "exec_prefix" directory, if it is different.
-TCL_PACKAGE_PATH='{/home/siepo/tltcl/lib}'
+TCL_PACKAGE_PATH='{/tmp/tltcl/lib}'
 
 # Tcl supports stub.
 TCL_SUPPORTS_STUBS=1
@@ -164,17 +164,17 @@
 
 # String to pass to linker to pick up the Tcl stub library from its
 # build directory.
-TCL_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.11/win -ltclstub86'
+TCL_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tcl8.6.12/win -ltclstub86'
 
 # String to pass to linker to pick up the Tcl stub library from its
 # installed directory.
-TCL_STUB_LIB_SPEC='-L/home/siepo/tltcl/lib -ltclstub86'
+TCL_STUB_LIB_SPEC='-L/tmp/tltcl/lib -ltclstub86'
 
 # Path to the Tcl stub library in the build directory.
-TCL_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tcl8.6.11/win/libtclstub86.a'
+TCL_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tcl8.6.12/win/libtclstub86.a'
 
 # Path to the Tcl stub library in the install directory.
-TCL_STUB_LIB_PATH='/home/siepo/tltcl/lib/libtclstub86.a'
+TCL_STUB_LIB_PATH='/tmp/tltcl/lib/libtclstub86.a'
 
 # Flag, 1: we built Tcl with threads enabled, 0 we didn't
 TCL_THREADS=1

Added: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,26 @@
+# -*- tcl -*-
+# Tcl package index file, version 1.1
+#
+# Make sure that TDBC is running in a compatible version of Tcl, and
+# that TclOO is available.
+
+if {![package vsatisfies [package provide Tcl] 8.6-]} {
+    return
+}
+apply {{dir} {
+    set libraryfile [file join $dir tdbc.tcl]
+    if {![file exists $libraryfile] && [info exists ::env(TDBC_LIBRARY)]} {
+	set libraryfile [file join $::env(TDBC_LIBRARY) tdbc.tcl]
+    }
+    if {[package vsatisfies [package provide Tcl] 9.0-]} {
+	package ifneeded tdbc 1.1.3 \
+		"package require TclOO;\
+		[list load [file join $dir tcl9tdbc113.dll] [string totitle tdbc]]\;\
+		[list source $libraryfile]"
+    } else {
+	package ifneeded tdbc 1.1.3 \
+		"package require TclOO;\
+		[list load [file join $dir tdbc113.dll] [string totitle tdbc]]\;\
+		[list source $libraryfile]"
+    }
+}} $dir


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,922 @@
+# tdbc.tcl --
+#
+#	Definitions of base classes from which TDBC drivers' connections,
+#	statements and result sets may inherit.
+#
+# Copyright (c) 2008 by Kevin B. Kenny
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id$
+#
+#------------------------------------------------------------------------------
+
+package require TclOO
+
+namespace eval ::tdbc {
+    namespace export connection statement resultset
+    variable generalError [list TDBC GENERAL_ERROR HY000 {}]
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::ParseConvenienceArgs --
+#
+#	Parse the convenience arguments to a TDBC 'execute',
+#	'executewithdictionary', or 'foreach' call.
+#
+# Parameters:
+#	argv - Arguments to the call
+#	optsVar -- Name of a variable in caller's scope that will receive
+#		   a dictionary of the supplied options
+#
+# Results:
+#	Returns any args remaining after parsing the options.
+#
+# Side effects:
+#	Sets the 'opts' dictionary to the options.
+#
+#------------------------------------------------------------------------------
+
+proc tdbc::ParseConvenienceArgs {argv optsVar} {
+
+    variable generalError
+    upvar 1 $optsVar opts
+
+    set opts [dict create -as dicts]
+    set i 0
+
+    # Munch keyword options off the front of the command arguments
+
+    foreach {key value} $argv {
+	if {[string index $key 0] eq {-}} {
+	    switch -regexp -- $key {
+		-as? {
+		    if {$value ne {dicts} && $value ne {lists}} {
+			set errorcode $generalError
+			lappend errorcode badVarType $value
+			return -code error \
+			    -errorcode $errorcode \
+			    "bad variable type \"$value\":\
+                             must be lists or dicts"
+		    }
+		    dict set opts -as $value
+		}
+		-c(?:o(?:l(?:u(?:m(?:n(?:s(?:v(?:a(?:r(?:i(?:a(?:b(?:le?)?)?)?)?)?)?)?)?)?)?)?)?) {
+		    dict set opts -columnsvariable $value
+		}
+		-- {
+		    incr i
+		    break
+		}
+		default {
+		    set errorcode $generalError
+		    lappend errorcode badOption $key
+		    return -code error \
+			-errorcode $errorcode \
+			"bad option \"$key\":\
+                             must be -as or -columnsvariable"
+		}
+	    }
+	} else {
+	    break
+	}
+	incr i 2
+    }
+
+    return [lrange $argv[set argv {}] $i end]
+
+}
+
+
+

+#------------------------------------------------------------------------------
+#
+# tdbc::connection --
+#
+#	Class that represents a generic connection to a database.
+#
+#-----------------------------------------------------------------------------
+
+oo::class create ::tdbc::connection {
+
+    # statementSeq is the sequence number of the last statement created.
+    # statementClass is the name of the class that implements the
+    #	'statement' API.
+    # primaryKeysStatement is the statement that queries primary keys
+    # foreignKeysStatement is the statement that queries foreign keys
+
+    variable statementSeq primaryKeysStatement foreignKeysStatement
+
+    # The base class constructor accepts no arguments.  It sets up the
+    # machinery to do the bookkeeping to keep track of what statements
+    # are associated with the connection.  The derived class constructor
+    # is expected to set the variable, 'statementClass' to the name
+    # of the class that represents statements, so that the 'prepare'
+    # method can invoke it.
+
+    constructor {} {
+	set statementSeq 0
+	namespace eval Stmt {}
+    }
+
+    # The 'close' method is simply an alternative syntax for destroying
+    # the connection.
+
+    method close {} {
+	my destroy
+    }
+
+    # The 'prepare' method creates a new statement against the connection,
+    # giving its constructor the current statement and the SQL code to
+    # prepare.  It uses the 'statementClass' variable set by the constructor
+    # to get the class to instantiate.
+
+    method prepare {sqlcode} {
+	return [my statementCreate Stmt::[incr statementSeq] [self] $sqlcode]
+    }
+
+    # The 'statementCreate' method delegates to the constructor
+    # of the class specified by the 'statementClass' variable. It's
+    # intended for drivers designed before tdbc 1.0b10. Current ones
+    # should forward this method to the constructor directly.
+
+    method statementCreate {name instance sqlcode} {
+	my variable statementClass
+	return [$statementClass create $name $instance $sqlcode]
+    }
+
+    # Derived classes are expected to implement the 'prepareCall' method,
+    # and have it call 'prepare' as needed (or do something else and
+    # install the resulting statement)
+
+    # The 'statements' method lists the statements active against this
+    # connection.
+
+    method statements {} {
+	info commands Stmt::*
+    }
+
+    # The 'resultsets' method lists the result sets active against this
+    # connection.
+
+    method resultsets {} {
+	set retval {}
+	foreach statement [my statements] {
+	    foreach resultset [$statement resultsets] {
+		lappend retval $resultset
+	    }
+	}
+	return $retval
+    }
+
+    # The 'transaction' method executes a block of Tcl code as an
+    # ACID transaction against the database.
+
+    method transaction {script} {
+	my begintransaction
+	set status [catch {uplevel 1 $script} result options]
+	if {$status in {0 2 3 4}} {
+	    set status2 [catch {my commit} result2 options2]
+	    if {$status2 == 1} {
+		set status 1
+		set result $result2
+		set options $options2
+	    }
+	}
+	switch -exact -- $status {
+	    0 {
+		# do nothing
+	    }
+	    2 - 3 - 4 {
+		set options [dict merge {-level 1} $options[set options {}]]
+		dict incr options -level
+	    }
+	    default {
+		my rollback
+	    }
+	}
+	return -options $options $result
+    }
+
+    # The 'allrows' method prepares a statement, then executes it with
+    # a given set of substituents, returning a list of all the rows
+    # that the statement returns. Optionally, it stores the names of
+    # the columns in '-columnsvariable'.
+    # Usage:
+    #     $db allrows ?-as lists|dicts? ?-columnsvariable varName? ?--?
+    #	      sql ?dictionary?
+
+    method allrows args {
+
+	variable ::tdbc::generalError
+
+	# Grab keyword-value parameters
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+
+	# Check postitional parameters
+
+	set cmd [list [self] prepare]
+	if {[llength $args] == 1} {
+	    set sqlcode [lindex $args 0]
+	} elseif {[llength $args] == 2} {
+	    lassign $args sqlcode dict
+	} else {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? sqlcode ?dictionary?"
+	}
+	lappend cmd $sqlcode
+
+	# Prepare the statement
+
+	set stmt [uplevel 1 $cmd]
+
+	# Delegate to the statement to accumulate the results
+
+	set cmd [list $stmt allrows {*}$opts --]
+	if {[info exists dict]} {
+	    lappend cmd $dict
+	}
+	set status [catch {
+	    uplevel 1 $cmd
+	} result options]
+
+	# Destroy the statement
+
+	catch {
+	    $stmt close
+	}
+
+	return -options $options $result
+    }
+
+    # The 'foreach' method prepares a statement, then executes it with
+    # a supplied set of substituents.  For each row of the result,
+    # it sets a variable to the row and invokes a script in the caller's
+    # scope.
+    #
+    # Usage:
+    #     $db foreach ?-as lists|dicts? ?-columnsVariable varName? ?--?
+    #         varName sql ?dictionary? script
+
+    method foreach args {
+
+	variable ::tdbc::generalError
+
+	# Grab keyword-value parameters
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+
+	# Check postitional parameters
+
+	set cmd [list [self] prepare]
+	if {[llength $args] == 3} {
+	    lassign $args varname sqlcode script
+	} elseif {[llength $args] == 4} {
+	    lassign $args varname sqlcode dict script
+	} else {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? varname sqlcode ?dictionary? script"
+	}
+	lappend cmd $sqlcode
+
+	# Prepare the statement
+
+	set stmt [uplevel 1 $cmd]
+
+	# Delegate to the statement to iterate over the results
+
+	set cmd [list $stmt foreach {*}$opts -- $varname]
+	if {[info exists dict]} {
+	    lappend cmd $dict
+	}
+	lappend cmd $script
+	set status [catch {
+	    uplevel 1 $cmd
+	} result options]
+
+	# Destroy the statement
+
+	catch {
+	    $stmt close
+	}
+
+	# Adjust return level in the case that the script [return]s
+
+	if {$status == 2} {
+	    set options [dict merge {-level 1} $options[set options {}]]
+	    dict incr options -level
+	}
+	return -options $options $result
+    }
+
+    # The 'BuildPrimaryKeysStatement' method builds a SQL statement to
+    # retrieve the primary keys from a database. (It executes once the
+    # first time the 'primaryKeys' method is executed, and retains the
+    # prepared statement for reuse.)
+
+    method BuildPrimaryKeysStatement {} {
+
+	# On some databases, CONSTRAINT_CATALOG is always NULL and
+	# JOINing to it fails. Check for this case and include that
+	# JOIN only if catalog names are supplied.
+
+	set catalogClause {}
+	if {[lindex [set count [my allrows -as lists {
+	    SELECT COUNT(*)
+            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+            WHERE CONSTRAINT_CATALOG IS NOT NULL}]] 0 0] != 0} {
+	    set catalogClause \
+		{AND xtable.CONSTRAINT_CATALOG = xcolumn.CONSTRAINT_CATALOG}
+	}
+	set primaryKeysStatement [my prepare "
+	     SELECT xtable.TABLE_SCHEMA AS \"tableSchema\",
+                 xtable.TABLE_NAME AS \"tableName\",
+                 xtable.CONSTRAINT_CATALOG AS \"constraintCatalog\",
+                 xtable.CONSTRAINT_SCHEMA AS \"constraintSchema\",
+                 xtable.CONSTRAINT_NAME AS \"constraintName\",
+                 xcolumn.COLUMN_NAME AS \"columnName\",
+                 xcolumn.ORDINAL_POSITION AS \"ordinalPosition\"
+             FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS xtable
+             INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE xcolumn
+                     ON xtable.CONSTRAINT_SCHEMA = xcolumn.CONSTRAINT_SCHEMA
+                    AND xtable.TABLE_NAME = xcolumn.TABLE_NAME
+                    AND xtable.CONSTRAINT_NAME = xcolumn.CONSTRAINT_NAME
+	            $catalogClause
+             WHERE xtable.TABLE_NAME = :tableName
+               AND xtable.CONSTRAINT_TYPE = 'PRIMARY KEY'
+  	"]
+    }
+
+    # The default implementation of the 'primarykeys' method uses the
+    # SQL INFORMATION_SCHEMA to retrieve primary key information. Databases
+    # that might not have INFORMATION_SCHEMA must overload this method.
+
+    method primarykeys {tableName} {
+	if {![info exists primaryKeysStatement]} {
+	    my BuildPrimaryKeysStatement
+	}
+	tailcall $primaryKeysStatement allrows [list tableName $tableName]
+    }
+
+    # The 'BuildForeignKeysStatements' method builds a SQL statement to
+    # retrieve the foreign keys from a database. (It executes once the
+    # first time the 'foreignKeys' method is executed, and retains the
+    # prepared statements for reuse.)
+
+    method BuildForeignKeysStatement {} {
+
+	# On some databases, CONSTRAINT_CATALOG is always NULL and
+	# JOINing to it fails. Check for this case and include that
+	# JOIN only if catalog names are supplied.
+
+	set catalogClause1 {}
+	set catalogClause2 {}
+	if {[lindex [set count [my allrows -as lists {
+	    SELECT COUNT(*)
+            FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+            WHERE CONSTRAINT_CATALOG IS NOT NULL}]] 0 0] != 0} {
+	    set catalogClause1 \
+		{AND fkc.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG}
+	    set catalogClause2 \
+		{AND pkc.CONSTRAINT_CATALOG = rc.CONSTRAINT_CATALOG}
+	}
+
+	foreach {exists1 clause1} {
+	    0 {}
+	    1 { AND pkc.TABLE_NAME = :primary}
+	} {
+	    foreach {exists2 clause2} {
+		0 {}
+		1 { AND fkc.TABLE_NAME = :foreign}
+	    } {
+		set stmt [my prepare "
+	     SELECT rc.CONSTRAINT_CATALOG AS \"foreignConstraintCatalog\",
+                    rc.CONSTRAINT_SCHEMA AS \"foreignConstraintSchema\",
+                    rc.CONSTRAINT_NAME AS \"foreignConstraintName\",
+                    rc.UNIQUE_CONSTRAINT_CATALOG
+                        AS \"primaryConstraintCatalog\",
+                    rc.UNIQUE_CONSTRAINT_SCHEMA AS \"primaryConstraintSchema\",
+                    rc.UNIQUE_CONSTRAINT_NAME AS \"primaryConstraintName\",
+                    rc.UPDATE_RULE AS \"updateAction\",
+		    rc.DELETE_RULE AS \"deleteAction\",
+                    pkc.TABLE_CATALOG AS \"primaryCatalog\",
+                    pkc.TABLE_SCHEMA AS \"primarySchema\",
+                    pkc.TABLE_NAME AS \"primaryTable\",
+                    pkc.COLUMN_NAME AS \"primaryColumn\",
+                    fkc.TABLE_CATALOG AS \"foreignCatalog\",
+                    fkc.TABLE_SCHEMA AS \"foreignSchema\",
+                    fkc.TABLE_NAME AS \"foreignTable\",
+                    fkc.COLUMN_NAME AS \"foreignColumn\",
+                    pkc.ORDINAL_POSITION AS \"ordinalPosition\"
+             FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
+             INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkc
+                     ON fkc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
+                    AND fkc.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA
+                    $catalogClause1
+             INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE pkc
+                     ON pkc.CONSTRAINT_NAME = rc.UNIQUE_CONSTRAINT_NAME
+                     AND pkc.CONSTRAINT_SCHEMA = rc.UNIQUE_CONSTRAINT_SCHEMA
+                     $catalogClause2
+                     AND pkc.ORDINAL_POSITION = fkc.ORDINAL_POSITION
+             WHERE 1=1
+                 $clause1
+                 $clause2
+             ORDER BY \"foreignConstraintCatalog\", \"foreignConstraintSchema\", \"foreignConstraintName\", \"ordinalPosition\"
+"]
+		dict set foreignKeysStatement $exists1 $exists2 $stmt
+	    }
+	}
+    }
+
+    # The default implementation of the 'foreignkeys' method uses the
+    # SQL INFORMATION_SCHEMA to retrieve primary key information. Databases
+    # that might not have INFORMATION_SCHEMA must overload this method.
+
+    method foreignkeys {args} {
+
+	variable ::tdbc::generalError
+
+	# Check arguments
+
+	set argdict {}
+	if {[llength $args] % 2 != 0} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?..."
+	}
+	foreach {key value} $args {
+	    if {$key ni {-primary -foreign}} {
+		set errorcode $generalError
+		lappend errorcode badOption
+		return -code error -errorcode $errorcode \
+		    "bad option \"$key\", must be -primary or -foreign"
+	    }
+	    set key [string range $key 1 end]
+	    if {[dict exists $argdict $key]} {
+		set errorcode $generalError
+		lappend errorcode dupOption
+		return -code error -errorcode $errorcode \
+		    "duplicate option \"$key\" supplied"
+	    }
+	    dict set argdict $key $value
+	}
+
+	# Build the statements that query foreign keys. There are four
+	# of them, one for each combination of whether -primary
+	# and -foreign is specified.
+
+	if {![info exists foreignKeysStatement]} {
+	    my BuildForeignKeysStatement
+	}
+	set stmt [dict get $foreignKeysStatement \
+		      [dict exists $argdict primary] \
+		      [dict exists $argdict foreign]]
+	tailcall $stmt allrows $argdict
+    }
+
+    # Derived classes are expected to implement the 'begintransaction',
+    # 'commit', and 'rollback' methods.
+
+    # Derived classes are expected to implement 'tables' and 'columns' method.
+
+}
+

+#------------------------------------------------------------------------------
+#
+# Class: tdbc::statement
+#
+#	Class that represents a SQL statement in a generic database
+#
+#------------------------------------------------------------------------------
+
+oo::class create tdbc::statement {
+
+    # resultSetSeq is the sequence number of the last result set created.
+    # resultSetClass is the name of the class that implements the 'resultset'
+    #	API.
+
+    variable resultSetClass resultSetSeq
+
+    # The base class constructor accepts no arguments.  It initializes
+    # the machinery for tracking the ownership of result sets. The derived
+    # constructor is expected to invoke the base constructor, and to
+    # set a variable 'resultSetClass' to the fully-qualified name of the
+    # class that represents result sets.
+
+    constructor {} {
+	set resultSetSeq 0
+	namespace eval ResultSet {}
+    }
+
+    # The 'execute' method on a statement runs the statement with
+    # a particular set of substituted variables.  It actually works
+    # by creating the result set object and letting that objects
+    # constructor do the work of running the statement.  The creation
+    # is wrapped in an [uplevel] call because the substitution proces
+    # may need to access variables in the caller's scope.
+
+    # WORKAROUND: Take out the '0 &&' from the next line when
+    # Bug 2649975 is fixed
+    if {0 && [package vsatisfies [package provide Tcl] 8.6]} {
+	method execute args {
+	    tailcall my resultSetCreate \
+		[namespace current]::ResultSet::[incr resultSetSeq]  \
+		[self] {*}$args
+	}
+    } else {
+	method execute args {
+	    return \
+		[uplevel 1 \
+		     [list \
+			  [self] resultSetCreate \
+			  [namespace current]::ResultSet::[incr resultSetSeq] \
+			  [self] {*}$args]]
+	}
+    }
+
+    # The 'ResultSetCreate' method is expected to be a forward to the
+    # appropriate result set constructor. If it's missing, the driver must
+    # have been designed for tdbc 1.0b9 and earlier, and the 'resultSetClass'
+    # variable holds the class name.
+
+    method resultSetCreate {name instance args} {
+	return [uplevel 1 [list $resultSetClass create \
+			       $name $instance {*}$args]]
+    }
+
+    # The 'resultsets' method returns a list of result sets produced by
+    # the current statement
+
+    method resultsets {} {
+	info commands ResultSet::*
+    }
+
+    # The 'allrows' method executes a statement with a given set of
+    # substituents, and returns a list of all the rows that the statement
+    # returns.  Optionally, it stores the names of columns in
+    # '-columnsvariable'.
+    #
+    # Usage:
+    #	$statement allrows ?-as lists|dicts? ?-columnsvariable varName? ?--?
+    #		?dictionary?
+
+
+    method allrows args {
+
+	variable ::tdbc::generalError
+
+	# Grab keyword-value parameters
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+
+	# Check postitional parameters
+
+	set cmd [list [self] execute]
+	if {[llength $args] == 0} {
+	    # do nothing
+	} elseif {[llength $args] == 1} {
+	    lappend cmd [lindex $args 0]
+	} else {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? ?dictionary?"
+	}
+
+	# Get the result set
+
+	set resultSet [uplevel 1 $cmd]
+
+	# Delegate to the result set's [allrows] method to accumulate
+	# the rows of the result.
+
+	set cmd [list $resultSet allrows {*}$opts]
+	set status [catch {
+	    uplevel 1 $cmd
+	} result options]
+
+	# Destroy the result set
+
+	catch {
+	    rename $resultSet {}
+	}
+
+	# Adjust return level in the case that the script [return]s
+
+	if {$status == 2} {
+	    set options [dict merge {-level 1} $options[set options {}]]
+	    dict incr options -level
+	}
+	return -options $options $result
+    }
+
+    # The 'foreach' method executes a statement with a given set of
+    # substituents.  It runs the supplied script, substituting the supplied
+    # named variable. Optionally, it stores the names of columns in
+    # '-columnsvariable'.
+    #
+    # Usage:
+    #	$statement foreach ?-as lists|dicts? ?-columnsvariable varName? ?--?
+    #		variableName ?dictionary? script
+
+    method foreach args {
+
+	variable ::tdbc::generalError
+
+	# Grab keyword-value parameters
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+
+	# Check positional parameters
+
+	set cmd [list [self] execute]
+	if {[llength $args] == 2} {
+	    lassign $args varname script
+	} elseif {[llength $args] == 3} {
+	    lassign $args varname dict script
+	    lappend cmd $dict
+	} else {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? varName ?dictionary? script"
+	}
+
+	# Get the result set
+
+	set resultSet [uplevel 1 $cmd]
+
+	# Delegate to the result set's [foreach] method to evaluate
+	# the script for each row of the result.
+
+	set cmd [list $resultSet foreach {*}$opts -- $varname $script]
+	set status [catch {
+	    uplevel 1 $cmd
+	} result options]
+
+	# Destroy the result set
+
+	catch {
+	    rename $resultSet {}
+	}
+
+	# Adjust return level in the case that the script [return]s
+
+	if {$status == 2} {
+	    set options [dict merge {-level 1} $options[set options {}]]
+	    dict incr options -level
+	}
+	return -options $options $result
+    }
+
+    # The 'close' method is syntactic sugar for invoking the destructor
+
+    method close {} {
+	my destroy
+    }
+
+    # Derived classes are expected to implement their own constructors,
+    # plus the following methods:
+
+    # paramtype paramName ?direction? type ?scale ?precision??
+    #     Declares the type of a parameter in the statement
+
+}
+

+#------------------------------------------------------------------------------
+#
+# Class: tdbc::resultset
+#
+#	Class that represents a result set in a generic database.
+#
+#------------------------------------------------------------------------------
+
+oo::class create tdbc::resultset {
+
+    constructor {} { }
+
+    # The 'allrows' method returns a list of all rows that a given
+    # result set returns.
+
+    method allrows args {
+
+	variable ::tdbc::generalError
+
+	# Parse args
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+	if {[llength $args] != 0} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? varName script"
+	}
+
+	# Do -columnsvariable if requested
+
+	if {[dict exists $opts -columnsvariable]} {
+	    upvar 1 [dict get $opts -columnsvariable] columns
+	}
+
+	# Assemble the results
+
+	if {[dict get $opts -as] eq {lists}} {
+	    set delegate nextlist
+	} else {
+	    set delegate nextdict
+	}
+	set results [list]
+	while {1} {
+	    set columns [my columns]
+	    while {[my $delegate row]} {
+		lappend results $row
+	    }
+	    if {![my nextresults]} break
+	}
+	return $results
+
+    }
+
+    # The 'foreach' method runs a script on each row from a result set.
+
+    method foreach args {
+
+	variable ::tdbc::generalError
+
+	# Grab keyword-value parameters
+
+	set args [::tdbc::ParseConvenienceArgs $args[set args {}] opts]
+
+	# Check positional parameters
+
+	if {[llength $args] != 2} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? varName script"
+	}
+
+	# Do -columnsvariable if requested
+
+	if {[dict exists $opts -columnsvariable]} {
+	    upvar 1 [dict get $opts -columnsvariable] columns
+	}
+
+	# Iterate over the groups of results
+	while {1} {
+
+	    # Export column names to caller
+
+	    set columns [my columns]
+
+	    # Iterate over the rows of one group of results
+
+	    upvar 1 [lindex $args 0] row
+	    if {[dict get $opts -as] eq {lists}} {
+		set delegate nextlist
+	    } else {
+		set delegate nextdict
+	    }
+	    while {[my $delegate row]} {
+		set status [catch {
+		    uplevel 1 [lindex $args 1]
+		} result options]
+		switch -exact -- $status {
+		    0 - 4 {	# OK or CONTINUE
+		    }
+		    2 {		# RETURN
+			set options \
+			    [dict merge {-level 1} $options[set options {}]]
+			dict incr options -level
+			return -options $options $result
+		    }
+		    3 {		# BREAK
+			set broken 1
+			break
+		    }
+		    default {	# ERROR or unknown status
+			return -options $options $result
+		    }
+		}
+	    }
+
+	    # Advance to the next group of results if there is one
+
+	    if {[info exists broken] || ![my nextresults]} {
+		break
+	    }
+	}
+
+	return
+    }
+
+
+    # The 'nextrow' method retrieves a row in the form of either
+    # a list or a dictionary.
+
+    method nextrow {args} {
+
+	variable ::tdbc::generalError
+
+	set opts [dict create -as dicts]
+	set i 0
+
+	# Munch keyword options off the front of the command arguments
+
+	foreach {key value} $args {
+	    if {[string index $key 0] eq {-}} {
+		switch -regexp -- $key {
+		    -as? {
+			dict set opts -as $value
+		    }
+		    -- {
+			incr i
+			break
+		    }
+		    default {
+			set errorcode $generalError
+			lappend errorcode badOption $key
+			return -code error -errorcode $errorcode \
+			    "bad option \"$key\":\
+                             must be -as or -columnsvariable"
+		    }
+		}
+	    } else {
+		break
+	    }
+	    incr i 2
+	}
+
+	set args [lrange $args $i end]
+	if {[llength $args] != 1} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?... ?--? varName"
+	}
+	upvar 1 [lindex $args 0] row
+	if {[dict get $opts -as] eq {lists}} {
+	    set delegate nextlist
+	} else {
+	    set delegate nextdict
+	}
+	return [my $delegate row]
+    }
+
+    # Derived classes must override 'nextresults' if a single
+    # statement execution can yield multiple sets of results
+
+    method nextresults {} {
+	return 0
+    }
+
+    # Derived classes must override 'outputparams' if statements can
+    # have output parameters.
+
+    method outputparams {} {
+	return {}
+    }
+
+    # The 'close' method is syntactic sugar for destroying the result set.
+
+    method close {} {
+	my destroy
+    }
+
+    # Derived classes are expected to implement the following methods:
+
+    # constructor and destructor.
+    #        Constructor accepts a statement and an optional
+    #        a dictionary of substituted parameters  and
+    #        executes the statement against the database. If
+    #	     the dictionary is not supplied, then the default
+    #	     is to get params from variables in the caller's scope).
+    # columns
+    #     -- Returns a list of the names of the columns in the result.
+    # nextdict variableName
+    #     -- Stores the next row of the result set in the given variable
+    #        in caller's scope, in the form of a dictionary that maps
+    #	     column names to values.
+    # nextlist variableName
+    #     -- Stores the next row of the result set in the given variable
+    #        in caller's scope, in the form of a list of cells.
+    # rowcount
+    #     -- Returns a count of rows affected by the statement, or -1
+    #        if the count of rows has not been determined.
+
+}
\ No newline at end of file


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbc113.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbcConfig.sh
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbcConfig.sh	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbcConfig.sh	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,81 @@
+# tdbcConfig.sh --
+#
+# This shell script (for sh) is generated automatically by TDBC's configure
+# script. It will create shell variables for most of the configuration options
+# discovered by the configure script. This script is intended to be included
+# by the configure scripts for TDBC extensions so that they don't have to
+# figure this all out for themselves.
+#
+# The information in this file is specific to a single platform.
+#
+# RCS: @(#) $Id$
+
+# TDBC's version number
+tdbc_VERSION=1.1.3
+TDBC_VERSION=1.1.3
+
+# Name of the TDBC library - may be either a static or shared library
+tdbc_LIB_FILE=tdbc113.dll
+TDBC_LIB_FILE=tdbc113.dll
+
+# String to pass to the linker to pick up the TDBC library from its build dir
+tdbc_BUILD_LIB_SPEC="-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3 -ltdbc113"
+TDBC_BUILD_LIB_SPEC="-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3 -ltdbc113"
+
+# String to pass to the linker to pick up the TDBC library from its installed
+# dir.
+tdbc_LIB_SPEC="-L/tmp/tltcl/lib/tdbc1.1.3 -ltdbc113"
+TDBC_LIB_SPEC="-L/tmp/tltcl/lib/tdbc1.1.3 -ltdbc113"
+
+# Name of the TBDC stub library
+tdbc_STUB_LIB_FILE="libtdbcstub113.a"
+TDBC_STUB_LIB_FILE="libtdbcstub113.a"
+
+# String to pass to the linker to pick up the TDBC stub library from its
+# build directory
+tdbc_BUILD_STUB_LIB_SPEC="-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3 -ltdbcstub113"
+TDBC_BUILD_STUB_LIB_SPEC="-L/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3 -ltdbcstub113"
+
+# String to pass to the linker to pick up the TDBC stub library from its
+# installed directory
+tdbc_STUB_LIB_SPEC="-L/tmp/tltcl/lib/tdbc1.1.3 -ltdbcstub113"
+TDBC_STUB_LIB_SPEC="-L/tmp/tltcl/lib/tdbc1.1.3 -ltdbcstub113"
+
+# Path name of the TDBC stub library in its build directory
+tdbc_BUILD_STUB_LIB_PATH="/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3/libtdbcstub113.a"
+TDBC_BUILD_STUB_LIB_PATH="/home/siepo/xdrive/tltcl/tcl8.6.12/win/pkgs/tdbc1.1.3/libtdbcstub113.a"
+
+# Path name of the TDBC stub library in its installed directory
+tdbc_STUB_LIB_PATH="/tmp/tltcl/lib/tdbc1.1.3/libtdbcstub113.a"
+TDBC_STUB_LIB_PATH="/tmp/tltcl/lib/tdbc1.1.3/libtdbcstub113.a"
+
+# Location of the top-level source directories from which TDBC was built.
+# This is the directory that contains doc/, generic/ and so on.  If TDBC
+# was compiled in a directory other than the source directory, this still
+# points to the location of the sources, not the location where TDBC was
+# compiled.
+tdbc_SRC_DIR="/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3"
+TDBC_SRC_DIR="/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3"
+
+# String to pass to the compiler so that an extension can find installed TDBC
+# headers
+tdbc_INCLUDE_SPEC="-I/tmp/tltcl/include"
+TDBC_INCLUDE_SPEC="-I/tmp/tltcl/include"
+
+# String to pass to the compiler so that an extension can find TDBC headers
+# in the source directory
+tdbc_BUILD_INCLUDE_SPEC="-I/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3/generic"
+TDBC_BUILD_INCLUDE_SPEC="-I/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3/generic"
+
+# Path name where .tcl files in the tdbc package appear at run time.
+tdbc_LIBRARY_PATH="/tmp/tltcl/lib/tdbc1.1.3"
+TDBC_LIBRARY_PATH="/tmp/tltcl/lib/tdbc1.1.3"
+
+# Path name where .tcl files in the tdbc package appear at build time.
+tdbc_BUILD_LIBRARY_PATH="/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3/library"
+TDBC_BUILD_LIBRARY_PATH="/home/siepo/xdrive/tltcl/tcl8.6.12/pkgs/tdbc1.1.3/library"
+
+# Additional flags that must be passed to the C compiler to use tdbc
+tdbc_CFLAGS=
+TDBC_CFLAGS=
+


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbc1.1.3/tdbcConfig.sh
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,14 @@
+# Index file to load the TDBC MySQL package.
+
+if {![package vsatisfies [package provide Tcl] 8.6-]} {
+    return
+}
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded tdbc::mysql 1.1.3 \
+	    "[list source [file join $dir tdbcmysql.tcl]]\;\
+	    [list load [file join $dir tcl9tdbcmysql113.dll] [string totitle tdbcmysql]]"
+} else {
+    package ifneeded tdbc::mysql 1.1.3 \
+	    "[list source [file join $dir tdbcmysql.tcl]]\;\
+	    [list load [file join $dir tdbcmysql113.dll] [string totitle tdbcmysql]]"
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,193 @@
+# tdbcmysql.tcl --
+#
+#	Class definitions and Tcl-level methods for the tdbc::mysql bridge.
+#
+# Copyright (c) 2008 by Kevin B. Kenny
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tdbcmysql.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
+#
+#------------------------------------------------------------------------------
+
+package require tdbc
+
+::namespace eval ::tdbc::mysql {
+
+    namespace export connection datasources drivers
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::mysql::connection --
+#
+#	Class representing a connection to a database through MYSQL.
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::mysql::connection {
+
+    superclass ::tdbc::connection
+
+    # The constructor is written in C. It takes alternating keywords
+    # and values pairs as its argumenta.  (See the manual page for the
+    # available options.)
+
+    variable foreignKeysStatement
+
+    # The 'statementCreate' method delegates to the constructor of the
+    # statement class
+
+    forward statementCreate ::tdbc::mysql::statement create
+
+    # The 'columns' method returns a dictionary describing the tables
+    # in the database
+
+    method columns {table {pattern %}} {
+
+	# To return correct lengths of CHARACTER and BINARY columns,
+	# we need to know the maximum lengths of characters in each
+	# collation. We cache this information only once, on the first
+	# call to 'columns'.
+
+	if {[my NeedCollationInfo]} {
+	    my SetCollationInfo {*}[my allrows -as lists {
+		SELECT coll.id, cs.maxlen
+		FROM INFORMATION_SCHEMA.COLLATIONS coll,
+		     INFORMATION_SCHEMA.CHARACTER_SETS cs
+		WHERE cs.CHARACTER_SET_NAME = coll.CHARACTER_SET_NAME
+		ORDER BY coll.id DESC
+	    }]
+	}
+
+	return [my Columns $table $pattern]
+    }
+
+    # The 'preparecall' method gives a portable interface to prepare
+    # calls to stored procedures.  It delegates to 'prepare' to do the
+    # actual work.
+
+    method preparecall {call} {
+	regexp {^[[:space:]]*(?:([A-Za-z_][A-Za-z_0-9]*)[[:space:]]*=)?(.*)} \
+	    $call -> varName rest
+	if {$varName eq {}} {
+	    my prepare "CALL $rest"
+	} else {
+	    my prepare \\{:$varName=$rest\\}
+	}
+    }
+
+    # The 'init', 'begintransaction', 'commit, 'rollback', 'tables'
+    # 'NeedCollationInfo', 'SetCollationInfo', and 'Columns' methods
+    # are implemented in C.
+
+    # The 'BuildForeignKeysStatements' method builds a SQL statement to
+    # retrieve the foreign keys from a database. (It executes once the
+    # first time the 'foreignKeys' method is executed, and retains the
+    # prepared statements for reuse.)  It is slightly nonstandard because
+    # MYSQL doesn't name the PRIMARY constraints uniquely.
+
+    method BuildForeignKeysStatement {} {
+
+	foreach {exists1 clause1} {
+	    0 {}
+	    1 { AND fkc.REFERENCED_TABLE_NAME = :primary}
+	} {
+	    foreach {exists2 clause2} {
+		0 {}
+		1 { AND fkc.TABLE_NAME = :foreign}
+	    } {
+		set stmt [my prepare "
+	     SELECT rc.CONSTRAINT_SCHEMA AS \"foreignConstraintSchema\",
+                    rc.CONSTRAINT_NAME AS \"foreignConstraintName\",
+                    rc.UPDATE_RULE AS \"updateAction\",
+		    rc.DELETE_RULE AS \"deleteAction\",
+		    fkc.REFERENCED_TABLE_SCHEMA AS \"primarySchema\",
+                    fkc.REFERENCED_TABLE_NAME AS \"primaryTable\",
+                    fkc.REFERENCED_COLUMN_NAME AS \"primaryColumn\",
+                    fkc.TABLE_SCHEMA AS \"foreignSchema\",
+                    fkc.TABLE_NAME AS \"foreignTable\",
+                    fkc.COLUMN_NAME AS \"foreignColumn\",
+                    fkc.ORDINAL_POSITION AS \"ordinalPosition\"
+             FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
+             INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE fkc
+                     ON fkc.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
+                    AND fkc.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA
+             WHERE 1=1
+                 $clause1
+                 $clause2
+"]
+		dict set foreignKeysStatement $exists1 $exists2 $stmt
+	    }
+	}
+    }
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::mysql::statement --
+#
+#	The class 'tdbc::mysql::statement' models one statement against a
+#       database accessed through an MYSQL connection
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::mysql::statement {
+
+    superclass ::tdbc::statement
+
+    # The 'resultSetCreate' method forwards to the constructor of the
+    # result set.
+
+    forward resultSetCreate ::tdbc::mysql::resultset create
+
+    # Methods implemented in C:
+    #
+    # constructor connection SQLCode
+    #	The constructor accepts the handle to the connection and the SQL code
+    #	for the statement to prepare.  It creates a subordinate namespace to
+    #	hold the statement's active result sets, and then delegates to the
+    #	'init' method, written in C, to do the actual work of preparing the
+    #	statement.
+    # params
+    #   Returns descriptions of the parameters of a statement.
+    # paramtype paramname ?direction? type ?precision ?scale??
+    #   Declares the type of a parameter in the statement
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::mysql::resultset --
+#
+#	The class 'tdbc::mysql::resultset' models the result set that is
+#	produced by executing a statement against an MYSQL database.
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::mysql::resultset {
+
+    superclass ::tdbc::resultset
+
+    # Methods implemented in C include:
+
+    # constructor statement ?dictionary?
+    #     -- Executes the statement against the database, optionally providing
+    #        a dictionary of substituted parameters (default is to get params
+    #        from variables in the caller's scope).
+    # columns
+    #     -- Returns a list of the names of the columns in the result.
+    # nextdict
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a dictionary whose keys are
+    #        column names and whose values are column values, or else
+    #        as a list of cells.
+    # nextlist
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a list of cells.
+    # rowcount
+    #     -- Returns a count of rows affected by the statement, or -1
+    #        if the count of rows has not been determined.
+
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.3/tdbcmysql113.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,14 @@
+# Index file to load the TDBC ODBC package.
+
+if {![package vsatisfies [package provide Tcl] 8.6-]} {
+    return
+}
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded tdbc::odbc 1.1.3 \
+	    "[list source [file join $dir tdbcodbc.tcl]]\;\
+	    [list load [file join $dir tcl9tdbcodbc113.dll] [string totitle tdbcodbc]]"
+} else {
+    package ifneeded tdbc::odbc 1.1.3 \
+	    "[list source [file join $dir tdbcodbc.tcl]]\;\
+	    [list load [file join $dir tdbcodbc113.dll] [string totitle tdbcodbc]]"
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,515 @@
+# tdbcodbc.tcl --
+#
+#	Class definitions and Tcl-level methods for the tdbc::odbc bridge.
+#
+# Copyright (c) 2008 by Kevin B. Kenny
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tdbcodbc.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
+#
+#------------------------------------------------------------------------------
+
+package require tdbc
+
+::namespace eval ::tdbc::odbc {
+
+    namespace export connection datasources drivers
+
+    # Data types that are predefined in ODBC
+
+    variable sqltypes [dict create \
+			   1 char \
+			   2 numeric \
+			   3 decimal \
+			   4 integer \
+			   5 smallint \
+			   6 float \
+			   7 real \
+			   8 double \
+			   9 datetime \
+			   12 varchar \
+			   91 date \
+			   92 time \
+			   93 timestamp \
+			   -1 longvarchar \
+			   -2 binary \
+			   -3 varbinary \
+			   -4 longvarbinary \
+			   -5 bigint \
+			   -6 tinyint \
+			   -7 bit \
+			   -8 wchar \
+			   -9 wvarchar \
+			   -10 wlongvarchar \
+			   -11 guid]
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::connection --
+#
+#	Class representing a connection to a database through ODBC.
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::odbc::connection {
+
+    superclass ::tdbc::connection
+
+    variable statementSeq typemap
+
+    # The constructor is written in C. It takes the connection string
+    # as its argument It sets up a namespace to hold the statements
+    # associated with the connection, and then delegates to the 'init'
+    # method (written in C) to do the actual work of attaching to the
+    # database. When that comes back, it sets up a statement to query
+    # the support types, makes a dictionary to enumerate them, and
+    # calls back to set a flag if WVARCHAR is seen (If WVARCHAR is
+    # seen, the database supports Unicode.)
+
+    # The 'statementCreate' method forwards to the constructor of the
+    # statement class
+
+    forward statementCreate ::tdbc::odbc::statement create
+
+    # The 'tables' method returns a dictionary describing the tables
+    # in the database
+
+    method tables {{pattern %}} {
+	set stmt [::tdbc::odbc::tablesStatement create \
+		      Stmt::[incr statementSeq] [self] $pattern]
+       	set status [catch {
+	    set retval {}
+	    $stmt foreach -as dicts row {
+		if {[dict exists $row TABLE_NAME]} {
+		    dict set retval [dict get $row TABLE_NAME] $row
+		}
+	    }
+	    set retval
+	} result options]
+	catch {rename $stmt {}}
+	return -level 0 -options $options $result
+    }
+
+    # The 'columns' method returns a dictionary describing the tables
+    # in the database
+
+    method columns {table {pattern %}} {
+	# Make sure that the type map is initialized
+	my typemap
+
+	# Query the columns from the database
+
+	set stmt [::tdbc::odbc::columnsStatement create \
+		      Stmt::[incr statementSeq] [self] $table $pattern]
+	set status [catch {
+	    set retval {}
+	    $stmt foreach -as dicts origrow {
+
+		# Map the type, precision, scale and nullable indicators
+		# to tdbc's notation
+
+		set row {}
+		dict for {key value} $origrow {
+		    dict set row [string tolower $key] $value
+		}
+		if {[dict exists $row column_name]} {
+		    if {[dict exists $typemap \
+			     [dict get $row data_type]]} {
+			dict set row type \
+			    [dict get $typemap \
+				 [dict get $row data_type]]
+		    } else {
+			dict set row type [dict get $row type_name]
+		    }
+		    if {[dict exists $row column_size]} {
+			dict set row precision \
+			    [dict get $row column_size]
+		    }
+		    if {[dict exists $row decimal_digits]} {
+			dict set row scale \
+			    [dict get $row decimal_digits]
+		    }
+		    if {![dict exists $row nullable]} {
+			dict set row nullable \
+			    [expr {!![string trim [dict get $row is_nullable]]}]
+		    }
+		    dict set retval [dict get $row column_name] $row
+		}
+	    }
+	    set retval
+	} result options]
+	catch {rename $stmt {}}
+	return -level 0 -options $options $result
+    }
+
+    # The 'primarykeys' method returns a dictionary describing the primary
+    # keys of a table
+
+    method primarykeys {tableName} {
+	set stmt [::tdbc::odbc::primarykeysStatement create \
+		      Stmt::[incr statementSeq] [self] $tableName]
+       	set status [catch {
+	    set retval {}
+	    $stmt foreach -as dicts row {
+		foreach {odbcKey tdbcKey} {
+		    TABLE_CAT		tableCatalog
+		    TABLE_SCHEM		tableSchema
+		    TABLE_NAME		tableName
+		    COLUMN_NAME		columnName
+		    KEY_SEQ		ordinalPosition
+		    PK_NAME		constraintName
+		} {
+		    if {[dict exists $row $odbcKey]} {
+			dict set row $tdbcKey [dict get $row $odbcKey]
+			dict unset row $odbcKey
+		    }
+		}
+		lappend retval $row
+	    }
+	    set retval
+	} result options]
+	catch {rename $stmt {}}
+	return -level 0 -options $options $result
+    }
+
+    # The 'foreignkeys' method returns a dictionary describing the foreign
+    # keys of a table
+
+    method foreignkeys {args} {
+	set stmt [::tdbc::odbc::foreignkeysStatement create \
+		      Stmt::[incr statementSeq] [self] {*}$args]
+       	set status [catch {
+	    set fkseq 0
+	    set retval {}
+	    $stmt foreach -as dicts row {
+		foreach {odbcKey tdbcKey} {
+		    PKTABLE_CAT		primaryCatalog
+		    PKTABLE_SCHEM	primarySchema
+		    PKTABLE_NAME	primaryTable
+		    PKCOLUMN_NAME	primaryColumn
+		    FKTABLE_CAT		foreignCatalog
+		    FKTABLE_SCHEM	foreignSchema
+		    FKTABLE_NAME	foreignTable
+		    FKCOLUMN_NAME	foreignColumn
+		    UPDATE_RULE		updateRule
+		    DELETE_RULE		deleteRule
+		    DEFERRABILITY	deferrable
+		    KEY_SEQ		ordinalPosition
+		    FK_NAME		foreignConstraintName
+		} {
+		    if {[dict exists $row $odbcKey]} {
+			dict set row $tdbcKey [dict get $row $odbcKey]
+			dict unset row $odbcKey
+		    }
+		}
+		# Horrible kludge: If the driver doesn't report FK_NAME,
+		# make one up.
+		if {![dict exists $row foreignConstraintName]} {
+		    if {![dict exists $row ordinalPosition]
+			|| [dict get $row ordinalPosition] == 1} {
+			set fkname ?[dict get $row foreignTable]?[incr fkseq]
+		    }
+		    dict set row foreignConstraintName $fkname
+		}
+		lappend retval $row
+	    }
+	    set retval
+	} result options]
+	catch {rename $stmt {}}
+	return -level 0 -options $options $result
+    }
+
+    # The 'prepareCall' method gives a portable interface to prepare
+    # calls to stored procedures.  It delegates to 'prepare' to do the
+    # actual work.
+
+    method preparecall {call} {
+
+	regexp {^[[:space:]]*(?:([A-Za-z_][A-Za-z_0-9]*)[[:space:]]*=)?(.*)} \
+	    $call -> varName rest
+	if {$varName eq {}} {
+	    my prepare \\{CALL $rest\\}
+	} else {
+	    my prepare \\{:$varName=CALL $rest\\}
+	}
+
+	if 0 {
+	# Kevin thinks this is going to be
+
+	if {![regexp -expanded {
+	    ^\s*				   # leading whitespace
+	    (?::([[:alpha:]_][[:alnum:]_]*)\s*=\s*) # possible variable name
+	    (?:(?:([[:alpha:]_][[:alnum:]_]*)\s*[.]\s*)?   # catalog
+	       ([[:alpha:]_][[:alnum:]_]*)\s*[.]\s*)?      # schema
+	    ([[:alpha:]_][[:alnum:]_]*)\s*		   # procedure
+	    (.*)$					   # argument list
+	} $call -> varName catalog schema procedure arglist]} {
+	    return -code error \
+		-errorCode [list TDBC \
+				SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION \
+				42000 ODBC -1] \
+		"Syntax error in stored procedure call"
+	} else {
+	    my PrepareCall $varName $catalog $schema $procedure $arglist
+	}
+
+	# at least if making all parameters 'inout' doesn't work.
+
+        }
+
+    }
+
+    # The 'typemap' method returns the type map
+
+    method typemap {} {
+	if {![info exists typemap]} {
+	    set typemap $::tdbc::odbc::sqltypes
+	    set typesStmt [tdbc::odbc::typesStatement new [self]]
+	    $typesStmt foreach row {
+		set typeNum [dict get $row DATA_TYPE]
+		if {![dict exists $typemap $typeNum]} {
+		    dict set typemap $typeNum [string tolower \
+						   [dict get $row TYPE_NAME]]
+		}
+		switch -exact -- $typeNum {
+		    -9 {
+			[self] HasWvarchar 1
+		    }
+		    -5 {
+			[self] HasBigint 1
+		    }
+		}
+	    }
+	    rename $typesStmt {}
+	}
+	return $typemap
+    }
+
+    # The 'begintransaction', 'commit' and 'rollback' methods are
+    # implemented in C.
+
+}
+

+#-------------------------------------------------------------------------------
+#
+# tdbc::odbc::statement --
+#
+#	The class 'tdbc::odbc::statement' models one statement against a
+#       database accessed through an ODBC connection
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::odbc::statement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is implemented in C. It accepts the handle to
+    # the connection and the SQL code for the statement to prepare.
+    # It creates a subordinate namespace to hold the statement's
+    # active result sets, and then delegates to the 'init' method,
+    # written in C, to do the actual work of preparing the statement.
+
+    # The 'resultSetCreate' method forwards to the result set constructor
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+    # The 'params' method describes the parameters to the statement
+
+    method params {} {
+	set typemap [[my connection] typemap]
+	set result {}
+	foreach {name flags typeNum precision scale nullable} [my ParamList] {
+	    set lst [dict create \
+			 name $name \
+			 direction [lindex {unknown in out inout} \
+					[expr {($flags & 0x06) >> 1}]] \
+			 type [dict get $typemap $typeNum] \
+			 precision $precision \
+			 scale $scale]
+	    if {$nullable in {0 1}} {
+		dict set list nullable $nullable
+	    }
+	    dict set result $name $lst
+	}
+	return $result
+    }
+
+    # Methods implemented in C:
+    # init statement ?dictionary?
+    #     Does the heavy lifting for the constructor
+    # connection
+    #	Returns the connection handle to which this statement belongs
+    # paramtype paramname ?direction? type ?precision ?scale??
+    #     Declares the type of a parameter in the statement
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::tablesStatement --
+#
+#	The class 'tdbc::odbc::tablesStatement' represents the special
+#	statement that queries the tables in a database through an ODBC
+#	connection.
+#
+#------------------------------------------------------------------------------
+
+oo::class create ::tdbc::odbc::tablesStatement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is written in C. It accepts the handle to the
+    # connection and a pattern to match table names.  It works in all
+    # ways like the constructor of the 'statement' class except that
+    # its 'init' method sets up to enumerate tables and not run a SQL
+    # query.
+
+    # The 'resultSetCreate' method forwards to the result set constructor
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::columnsStatement --
+#
+#	The class 'tdbc::odbc::tablesStatement' represents the special
+#	statement that queries the columns of a table or view
+#	in a database through an ODBC connection.
+#
+#------------------------------------------------------------------------------
+
+oo::class create ::tdbc::odbc::columnsStatement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is written in C. It accepts the handle to the
+    # connection, a table name, and a pattern to match column
+    # names. It works in all ways like the constructor of the
+    # 'statement' class except that its 'init' method sets up to
+    # enumerate tables and not run a SQL query.
+
+    # The 'resultSetCreate' class forwards to the constructor of the
+    # result set
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::primarykeysStatement --
+#
+#	The class 'tdbc::odbc::primarykeysStatement' represents the special
+#	statement that queries the primary keys on a table through an ODBC
+#	connection.
+#
+#------------------------------------------------------------------------------
+
+oo::class create ::tdbc::odbc::primarykeysStatement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is written in C. It accepts the handle to the
+    # connection and a table name.  It works in all
+    # ways like the constructor of the 'statement' class except that
+    # its 'init' method sets up to enumerate primary keys and not run a SQL
+    # query.
+
+    # The 'resultSetCreate' method forwards to the result set constructor
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::foreignkeysStatement --
+#
+#	The class 'tdbc::odbc::foreignkeysStatement' represents the special
+#	statement that queries the foreign keys on a table through an ODBC
+#	connection.
+#
+#------------------------------------------------------------------------------
+
+oo::class create ::tdbc::odbc::foreignkeysStatement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is written in C. It accepts the handle to the
+    # connection and the -primary and -foreign options.  It works in all
+    # ways like the constructor of the 'statement' class except that
+    # its 'init' method sets up to enumerate foreign keys and not run a SQL
+    # query.
+
+    # The 'resultSetCreate' method forwards to the result set constructor
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::typesStatement --
+#
+#	The class 'tdbc::odbc::typesStatement' represents the special
+#	statement that queries the types available in a database through
+#	an ODBC connection.
+#
+#------------------------------------------------------------------------------
+
+
+oo::class create ::tdbc::odbc::typesStatement {
+
+    superclass ::tdbc::statement
+
+    # The constructor is written in C. It accepts the handle to the
+    # connection, and (optionally) a data type number. It works in all
+    # ways like the constructor of the 'statement' class except that
+    # its 'init' method sets up to enumerate types and not run a SQL
+    # query.
+
+    # The 'resultSetCreate' method forwards to the constructor of result sets
+
+    forward resultSetCreate ::tdbc::odbc::resultset create
+
+    # The C code contains a variant implementation of the 'init' method.
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::odbc::resultset --
+#
+#	The class 'tdbc::odbc::resultset' models the result set that is
+#	produced by executing a statement against an ODBC database.
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::odbc::resultset {
+
+    superclass ::tdbc::resultset
+
+    # Methods implemented in C include:
+
+    # constructor statement ?dictionary?
+    #     -- Executes the statement against the database, optionally providing
+    #        a dictionary of substituted parameters (default is to get params
+    #        from variables in the caller's scope).
+    # columns
+    #     -- Returns a list of the names of the columns in the result.
+    # nextdict
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a dictionary whose keys are
+    #        column names and whose values are column values.
+    # nextlist
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a list of cells.
+    # rowcount
+    #     -- Returns a count of rows affected by the statement, or -1
+    #        if the count of rows has not been determined.
+
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.3/tdbcodbc113.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,14 @@
+# Index file to load the TDBC Postgres package.
+
+if {![package vsatisfies [package provide Tcl] 8.6-]} {
+    return
+}
+if {[package vsatisfies [package provide Tcl] 9.0-]} {
+    package ifneeded tdbc::postgres 1.1.3 \
+	    "[list source [file join $dir tdbcpostgres.tcl]]\;\
+	    [list load [file join $dir tcl9tdbcpostgres113.dll] [string totitle tdbcpostgres]]"
+} else {
+    package ifneeded tdbc::postgres 1.1.3 \
+	    "[list source [file join $dir tdbcpostgres.tcl]]\;\
+	    [list load [file join $dir tdbcpostgres113.dll] [string totitle tdbcpostgres]]"
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,135 @@
+# tdbcpostgres.tcl --
+#
+#	Class definitions and Tcl-level methods for the tdbc::postgres bridge.
+#
+# Copyright (c) 2009 by Slawomir Cygan
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+#------------------------------------------------------------------------------
+
+package require tdbc
+
+::namespace eval ::tdbc::mypostgres {
+
+    namespace export connection datasources drivers
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::postgres::connection --
+#
+#	Class representing a connection to a Postgres database.
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::postgres::connection {
+
+    superclass ::tdbc::connection
+
+    # The constructor is written in C. It takes alternating keywords
+    # and values pairs as its arguments.  (See the manual page for the
+    # available options.)
+
+    # The 'statementCreate' method delegates to the constructor of the
+    # statement class
+
+    forward statementCreate ::tdbc::postgres::statement create
+
+
+    # The 'prepareCall' method gives a portable interface to prepare
+    # calls to stored procedures.  It delegates to 'prepare' to do the
+    # actual work.
+
+    method preparecall {call} {
+	regexp {^[[:space:]]*(?:([A-Za-z_][A-Za-z_0-9]*)[[:space:]]*=)?(.*)} \
+	    $call -> varName rest
+	if {$varName eq {}} {
+	    my prepare \\{$rest\\}
+	} else {
+	    my prepare \\{:$varName=$rest\\}
+	}
+    }
+
+    # The 'init', 'begintransaction', 'commit, 'rollback', 'tables'
+    #  and 'columns' methods are implemented in C.
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::postgres::statement --
+#
+#	The class 'tdbc::postgres::statement' models one statement against a
+#       database accessed through a Postgres connection
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::postgres::statement {
+
+    superclass ::tdbc::statement
+
+    # The 'resultSetCreate' method forwards to the constructor of the
+    # result set.
+
+    forward resultSetCreate ::tdbc::postgres::resultset create
+
+    # Methods implemented in C:
+    #
+    # constructor connection SQLCode
+    #	The constructor accepts the handle to the connection and the SQL code
+    #	for the statement to prepare.  It creates a subordinate namespace to
+    #	hold the statement's active result sets, and then delegates to the
+    #	'init' method, written in C, to do the actual work of preparing the
+    #	statement.
+    # params
+    #   Returns descriptions of the parameters of a statement.
+    # paramtype paramname ?direction? type ?precision ?scale??
+    #   Declares the type of a parameter in the statement
+
+}
+

+#------------------------------------------------------------------------------
+#
+# tdbc::postgres::resultset --
+#
+#	The class 'tdbc::postgres::resultset' models the result set that is
+#	produced by executing a statement against a Postgres database.
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::postgres::resultset {
+
+    superclass ::tdbc::resultset
+
+    # The 'nextresults' method is stubbed out; tdbcpostgres does not
+    # allow a single call to return multiple results.
+
+    method nextresults {} {
+	while {[my nextdict rubbish]} {}
+	return 0
+    }
+
+    # Methods implemented in C include:
+
+    # constructor statement ?dictionary?
+    #     -- Executes the statement against the database, optionally providing
+    #        a dictionary of substituted parameters (default is to get params
+    #        from variables in the caller's scope).
+    # columns
+    #     -- Returns a list of the names of the columns in the result.
+    # nextdict
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a dictionary whose keys are
+    #        column names and whose values are column values, or else
+    #        as a list of cells.
+    # nextlist
+    #     -- Stores the next row of the result set in the given variable in
+    #        the caller's scope as a list of cells.
+    # rowcount
+    #     -- Returns a count of rows affected by the statement, or -1
+    #        if the count of rows has not been determined.
+
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.3/tdbcpostgres113.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/thread2.8.7/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/thread2.8.7/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,68 @@
+# -*- tcl -*-
+# Tcl package index file, version 1.1
+#
+
+if {![package vsatisfies [package provide Tcl] 8.4]} {
+    # Pre-8.4 Tcl interps we dont support at all.  Bye!
+    # 9.0+ Tcl interps are only supported on 32-bit platforms.
+    if {![package vsatisfies [package provide Tcl] 9.0]
+	    || ($::tcl_platform(pointerSize) != 4)} {
+	return
+    }
+}
+
+# All Tcl 8.4+ interps can [load] Thread 2.8.7
+#
+# For interps that are not thread-enabled, we still call [package ifneeded].
+# This is contrary to the usual convention, but is a good idea because we
+# cannot imagine any other version of Thread that might succeed in a
+# thread-disabled interp.  There's nothing to gain by yielding to other
+# competing callers of [package ifneeded Thread].  On the other hand,
+# deferring the error has the advantage that a script calling
+# [package require Thread] in a thread-disabled interp gets an error message
+# about a thread-disabled interp, instead of the message
+# "can't find package Thread".
+
+package ifneeded Thread 2.8.7 [list load [file join $dir thread287.dll] [string totitle thread]]
+
+# package Ttrace uses some support machinery.
+
+# In Tcl 8.4 interps we use some older interfaces
+if {![package vsatisfies [package provide Tcl] 8.5]} {
+    package ifneeded Ttrace 2.8.7 "
+    [list proc thread_source {dir} {
+	if {[info exists ::env(TCL_THREAD_LIBRARY)] &&
+		[file readable $::env(TCL_THREAD_LIBRARY)/ttrace.tcl]} {
+	    source $::env(TCL_THREAD_LIBRARY)/ttrace.tcl
+	} elseif {[file readable [file join $dir .. lib ttrace.tcl]]} {
+	    source [file join $dir .. lib ttrace.tcl]
+	} elseif {[file readable [file join $dir ttrace.tcl]]} {
+	    source [file join $dir ttrace.tcl]
+	}
+	if {[namespace which ::ttrace::update] ne ""} {
+	    ::ttrace::update
+	}
+    }]
+    [list thread_source $dir]
+    [list rename thread_source {}]"
+    return
+}
+
+# In Tcl 8.5+ interps; use [::apply]
+
+package ifneeded Ttrace 2.8.7 [list ::apply {{dir} {
+    if {[info exists ::env(TCL_THREAD_LIBRARY)] &&
+	[file readable $::env(TCL_THREAD_LIBRARY)/ttrace.tcl]} {
+	source $::env(TCL_THREAD_LIBRARY)/ttrace.tcl
+    } elseif {[file readable [file join $dir .. lib ttrace.tcl]]} {
+	source [file join $dir .. lib ttrace.tcl]
+    } elseif {[file readable [file join $dir ttrace.tcl]]} {
+	source [file join $dir ttrace.tcl]
+    }
+    if {[namespace which ::ttrace::update] ne ""} {
+	::ttrace::update
+    }
+}} $dir]
+
+
+


Property changes on: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll	2022-03-14 10:03:11 UTC (rev 62700)

Property changes on: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/thread287.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-dosexec
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/ttrace.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/thread2.8.7/ttrace.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/thread2.8.7/ttrace.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -0,0 +1,942 @@
+#
+# ttrace.tcl --
+#
+# Copyright (C) 2003 Zoran Vasiljevic, Archiware GmbH. All Rights Reserved.
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+# ----------------------------------------------------------------------------
+#
+# User level commands:
+#
+#   ttrace::eval           top-level wrapper (ttrace-savvy eval)
+#   ttrace::enable         activates registered Tcl command traces
+#   ttrace::disable        terminates tracing of Tcl commands
+#   ttrace::isenabled      returns true if ttrace is enabled
+#   ttrace::cleanup        bring the interp to a pristine state
+#   ttrace::update         update interp to the latest trace epoch
+#   ttrace::config         setup some configuration options
+#   ttrace::getscript      returns a script for initializing interps
+#
+# Commands used for/from trace callbacks:
+#
+#   ttrace::atenable       register callback to be done at trace enable
+#   ttrace::atdisable      register callback to be done at trace disable
+#   ttrace::addtrace       register user-defined tracer callback
+#   ttrace::addscript      register user-defined script generator
+#   ttrace::addresolver    register user-defined command resolver
+#   ttrace::addcleanup     register user-defined cleanup procedures
+#   ttrace::addentry       adds one entry into the named trace store
+#   ttrace::getentry       returns the entry value from the named store
+#   ttrace::delentry       removes the entry from the named store
+#   ttrace::getentries     returns all entries from the named store
+#   ttrace::preload        register procedures to be preloaded always
+#
+#
+# Limitations:
+#
+#   o. [namespace forget] is still not implemented
+#   o. [namespace origin cmd] breaks if cmd is not already defined
+#
+#      I left this deliberately. I didn't want to override the [namespace]
+#      command in order to avoid potential slowdown.
+#
+

+namespace eval ttrace {
+
+    # Setup some compatibility wrappers
+    if {[info commands nsv_set] != ""} {
+        variable tvers 0
+        variable mutex ns_mutex
+        variable elock [$mutex create traceepochmutex]
+        # Import the underlying API; faster than recomputing
+        interp alias {} [namespace current]::_array   {} nsv_array
+        interp alias {} [namespace current]::_incr    {} nsv_incr
+        interp alias {} [namespace current]::_lappend {} nsv_lappend
+        interp alias {} [namespace current]::_names   {} nsv_names
+        interp alias {} [namespace current]::_set     {} nsv_set
+        interp alias {} [namespace current]::_unset   {} nsv_unset
+    } elseif {![catch {
+        variable tvers [package require Thread]
+    }]} {
+        variable mutex thread::mutex
+        variable elock [$mutex create]
+        # Import the underlying API; faster than recomputing
+        interp alias {} [namespace current]::_array   {} tsv::array
+        interp alias {} [namespace current]::_incr    {} tsv::incr
+        interp alias {} [namespace current]::_lappend {} tsv::lappend
+        interp alias {} [namespace current]::_names   {} tsv::names
+        interp alias {} [namespace current]::_set     {} tsv::set
+        interp alias {} [namespace current]::_unset   {} tsv::unset
+    } else {
+        error "requires NaviServer/AOLserver or Tcl threading extension"
+    }
+
+    # Keep in sync with the Thread package
+    package provide Ttrace 2.8.7
+
+    # Package variables
+    variable resolvers ""     ; # List of registered resolvers
+    variable tracers   ""     ; # List of registered cmd tracers
+    variable scripts   ""     ; # List of registered script makers
+    variable enables   ""     ; # List of trace-enable callbacks
+    variable disables  ""     ; # List of trace-disable callbacks
+    variable preloads  ""     ; # List of procedure names to preload
+    variable enabled   0      ; # True if trace is enabled
+    variable config           ; # Array with config options
+
+    variable epoch     -1     ; # The initialization epoch
+    variable cleancnt   0     ; # Counter of registered cleaners
+
+    # Package private namespaces
+    namespace eval resolve "" ; # Commands for resolving commands
+    namespace eval trace   "" ; # Commands registered for tracing
+    namespace eval enable  "" ; # Commands invoked at trace enable
+    namespace eval disable "" ; # Commands invoked at trace disable
+    namespace eval script  "" ; # Commands for generating scripts
+
+    # Exported commands
+    namespace export unknown
+
+    # Initialize ttrace shared state
+    if {[_array exists ttrace] == 0} {
+        _set ttrace lastepoch $epoch
+        _set ttrace epochlist ""
+    }
+
+    # Initially, allow creation of epochs
+    set config(-doepochs) 1
+
+    proc eval {cmd args} {
+        enable
+        set code [catch {uplevel 1 [concat $cmd $args]} result]
+        disable
+        if {$code == 0} {
+            if {[llength [info commands ns_ictl]]} {
+                ns_ictl save [getscript]
+            } else {
+                thread::broadcast {
+                    package require Ttrace
+                    ttrace::update
+                }
+            }
+        }
+        return -code $code \
+            -errorinfo $::errorInfo -errorcode $::errorCode $result
+    }
+
+    proc config {args} {
+        variable config
+        if {[llength $args] == 0} {
+            array get config
+        } elseif {[llength $args] == 1} {
+            set opt [lindex $args 0]
+            set config($opt)
+        } else {
+            set opt [lindex $args 0]
+            set val [lindex $args 1]
+            set config($opt) $val
+        }
+    }
+
+    proc enable {} {
+        variable config
+        variable tracers
+        variable enables
+        variable enabled
+        incr enabled 1
+        if {$enabled > 1} {
+            return
+        }
+        if {$config(-doepochs) != 0} {
+            variable epoch [_newepoch]
+        }
+        set nsp [namespace current]
+        foreach enabler $enables {
+            enable::_$enabler
+        }
+        foreach trace $tracers {
+            if {[info commands $trace] != ""} {
+                trace add execution $trace leave ${nsp}::trace::_$trace
+            }
+        }
+    }
+
+    proc disable {} {
+        variable enabled
+        variable tracers
+        variable disables
+        incr enabled -1
+        if {$enabled > 0} {
+            return
+        }
+        set nsp [namespace current]
+        foreach disabler $disables {
+            disable::_$disabler
+        }
+        foreach trace $tracers {
+            if {[info commands $trace] != ""} {
+                trace remove execution $trace leave ${nsp}::trace::_$trace
+            }
+        }
+    }
+
+    proc isenabled {} {
+        variable enabled
+        expr {$enabled > 0}
+    }
+
+    proc update {{from -1}} {
+        if {$from == -1} {
+            variable epoch [_set ttrace lastepoch]
+        } else {
+            if {[lsearch [_set ttrace epochlist] $from] == -1} {
+                error "no such epoch: $from"
+            }
+            variable epoch $from
+        }
+        uplevel [getscript]
+    }
+
+    proc getscript {} {
+        variable preloads
+        variable epoch
+        variable scripts
+        append script [_serializensp] \n
+        append script "::namespace eval [namespace current] {" \n
+        append script "::namespace export unknown" \n
+        append script "_useepoch $epoch" \n
+        append script "}" \n
+        foreach cmd $preloads {
+            append script [_serializeproc $cmd] \n
+        }
+        foreach maker $scripts {
+            append script [script::_$maker]
+        }
+        return $script
+    }
+
+    proc cleanup {args} {
+        foreach cmd [info commands resolve::cleaner_*] {
+            uplevel $cmd $args
+        }
+    }
+
+    proc preload {cmd} {
+        variable preloads
+        if {[lsearch $preloads $cmd] == -1} {
+            lappend preloads $cmd
+        }
+    }
+
+    proc atenable {cmd arglist body} {
+        variable enables
+        if {[lsearch $enables $cmd] == -1} {
+            lappend enables $cmd
+            set cmd [namespace current]::enable::_$cmd
+            proc $cmd $arglist $body
+            return $cmd
+        }
+    }
+
+    proc atdisable {cmd arglist body} {
+        variable disables
+        if {[lsearch $disables $cmd] == -1} {
+            lappend disables $cmd
+            set cmd [namespace current]::disable::_$cmd
+            proc $cmd $arglist $body
+            return $cmd
+        }
+    }
+
+    proc addtrace {cmd arglist body} {
+        variable tracers
+        if {[lsearch $tracers $cmd] == -1} {
+            lappend tracers $cmd
+            set tracer [namespace current]::trace::_$cmd
+            proc $tracer $arglist $body
+            if {[isenabled]} {
+                trace add execution $cmd leave $tracer
+            }
+            return $tracer
+        }
+    }
+
+    proc addscript {cmd body} {
+        variable scripts
+        if {[lsearch $scripts $cmd] == -1} {
+            lappend scripts $cmd
+            set cmd [namespace current]::script::_$cmd
+            proc $cmd args $body
+            return $cmd
+        }
+    }
+
+    proc addresolver {cmd arglist body} {
+        variable resolvers
+        if {[lsearch $resolvers $cmd] == -1} {
+            lappend resolvers $cmd
+            set cmd [namespace current]::resolve::$cmd
+            proc $cmd $arglist $body
+            return $cmd
+        }
+    }
+
+    proc addcleanup {body} {
+        variable cleancnt
+        set cmd [namespace current]::resolve::cleaner_[incr cleancnt]
+        proc $cmd args $body
+        return $cmd
+    }
+
+    proc addentry {cmd var val} {
+        variable epoch
+        _set ${epoch}-$cmd $var $val
+    }
+
+    proc delentry {cmd var} {
+        variable epoch
+        set ei $::errorInfo
+        set ec $::errorCode
+        catch {_unset ${epoch}-$cmd $var}
+        set ::errorInfo $ei
+        set ::errorCode $ec
+    }
+
+    proc getentry {cmd var} {
+        variable epoch
+        set ei $::errorInfo
+        set ec $::errorCode
+        if {[catch {_set ${epoch}-$cmd $var} val]} {
+            set ::errorInfo $ei
+            set ::errorCode $ec
+            set val ""
+        }
+        return $val
+    }
+
+    proc getentries {cmd {pattern *}} {
+        variable epoch
+        _array names ${epoch}-$cmd $pattern
+    }
+
+    proc unknown {args} {
+        set cmd [lindex $args 0]
+        if {[uplevel ttrace::_resolve [list $cmd]]} {
+            set c [catch {uplevel $cmd [lrange $args 1 end]} r]
+        } else {
+            set c [catch {::eval ::tcl::unknown $args} r]
+        }
+        return -code $c -errorcode $::errorCode -errorinfo $::errorInfo $r
+    }
+
+    proc _resolve {cmd} {
+        variable resolvers
+        foreach resolver $resolvers {
+            if {[uplevel [info comm resolve::$resolver] [list $cmd]]} {
+                return 1
+            }
+        }
+        return 0
+    }
+
+    proc _getthread {} {
+        if {[info commands ns_thread] == ""} {
+            thread::id
+        } else {
+            ns_thread getid
+        }
+    }
+
+    proc _getthreads {} {
+        if {[info commands ns_thread] == ""} {
+            return [thread::names]
+        } else {
+            foreach entry [ns_info threads] {
+                lappend threads [lindex $entry 2]
+            }
+            return $threads
+        }
+    }
+
+    proc _newepoch {} {
+        variable elock
+        variable mutex
+        $mutex lock $elock
+        set old [_set ttrace lastepoch]
+        set new [_incr ttrace lastepoch]
+        _lappend ttrace $new [_getthread]
+        if {$old >= 0} {
+            _copyepoch $old $new
+            _delepochs
+        }
+        _lappend ttrace epochlist $new
+        $mutex unlock $elock
+        return $new
+    }
+
+    proc _copyepoch {old new} {
+        foreach var [_names $old-*] {
+            set cmd [lindex [split $var -] 1]
+            _array reset $new-$cmd [_array get $var]
+        }
+    }
+
+    proc _delepochs {} {
+        set tlist [_getthreads]
+        set elist ""
+        foreach epoch [_set ttrace epochlist] {
+            if {[_dropepoch $epoch $tlist] == 0} {
+                lappend elist $epoch
+            } else {
+                _unset ttrace $epoch
+            }
+        }
+        _set ttrace epochlist $elist
+    }
+
+    proc _dropepoch {epoch threads} {
+        set self [_getthread]
+        foreach tid [_set ttrace $epoch] {
+            if {$tid != $self && [lsearch $threads $tid] >= 0} {
+                lappend alive $tid
+            }
+        }
+        if {[info exists alive]} {
+            _set ttrace $epoch $alive
+            return 0
+        } else {
+            foreach var [_names $epoch-*] {
+                _unset $var
+            }
+            return 1
+        }
+    }
+
+    proc _useepoch {epoch} {
+        if {$epoch >= 0} {
+            set tid [_getthread]
+            if {[lsearch [_set ttrace $epoch] $tid] == -1} {
+                _lappend ttrace $epoch $tid
+            }
+        }
+    }
+
+    proc _serializeproc {cmd} {
+        set dargs [info args $cmd]
+        set pbody [info body $cmd]
+        set pargs ""
+        foreach arg $dargs {
+            if {![info default $cmd $arg def]} {
+                lappend pargs $arg
+            } else {
+                lappend pargs [list $arg $def]
+            }
+        }
+        set nsp [namespace qual $cmd]
+        if {$nsp == ""} {
+            set nsp "::"
+        }
+        append res [list ::namespace eval $nsp] " {" \n
+        append res [list ::proc [namespace tail $cmd] $pargs $pbody] \n
+        append res "}" \n
+    }
+
+    proc _serializensp {{nsp ""} {result _}} {
+        upvar $result res
+        if {$nsp == ""} {
+            set nsp [namespace current]
+        }
+        append res [list ::namespace eval $nsp] " {" \n
+        foreach var [info vars ${nsp}::*] {
+            set vname [namespace tail $var]
+            if {[array exists $var] == 0} {
+                append res [list ::variable $vname [set $var]] \n
+            } else {
+                append res [list ::variable $vname] \n
+                append res [list ::array set $vname [array get $var]] \n
+            }
+        }
+        foreach cmd [info procs ${nsp}::*] {
+            append res [_serializeproc $cmd] \n
+        }
+        append res "}" \n
+        foreach nn [namespace children $nsp] {
+            _serializensp $nn res
+        }
+        return $res
+    }
+}
+

+#
+# The code below is ment to be run once during the application start.  It
+# provides implementation of tracing callbacks for some Tcl commands.  Users
+# can supply their own tracer implementations on-the-fly.
+#
+# The code below will create traces for the following Tcl commands:
+#    "namespace", "variable", "load", "proc" and "rename"
+#
+# Also, the Tcl object extension XOTcl 1.1.0 is handled and all XOTcl related
+# things, like classes and objects are traced (many thanks to Gustaf Neumann
+# from XOTcl for his kind help and support).
+#
+
+eval {
+
+    #
+    # Register the "load" trace. This will create the following key/value pair
+    # in the "load" store:
+    #
+    #  --- key ----              --- value ---
+    #  <path_of_loaded_image>    <name_of_the_init_proc>
+    #
+    # We normally need only the name_of_the_init_proc for being able to load
+    # the package in other interpreters, but we store the path to the image
+    # file as well.
+    #
+
+    ttrace::addtrace load {cmdline code args} {
+        if {$code != 0} {
+            return
+        }
+        set image [lindex $cmdline 1]
+        set initp [lindex $cmdline 2]
+        if {$initp == ""} {
+            foreach pkg [info loaded] {
+                if {[lindex $pkg 0] == $image} {
+                    set initp [lindex $pkg 1]
+                }
+            }
+        }
+        ttrace::addentry load $image $initp
+    }
+
+    ttrace::addscript load {
+        append res "\n"
+        foreach entry [ttrace::getentries load] {
+            set initp [ttrace::getentry load $entry]
+            append res "::load {} $initp" \n
+        }
+        return $res
+    }
+
+    #
+    # Register the "namespace" trace. This will create the following key/value
+    # entry in "namespace" store:
+    #
+    #  --- key ----                   --- value ---
+    #  ::fully::qualified::namespace  1
+    #
+    # It will also fill the "proc" store for procedures and commands imported
+    # in this namespace with following:
+    #
+    #  --- key ----                   --- value ---
+    #  ::fully::qualified::proc       [list <ns>  "" ""]
+    #
+    # The <ns> is the name of the namespace where the command or procedure is
+    # imported from.
+    #
+
+    ttrace::addtrace namespace {cmdline code args} {
+        if {$code != 0} {
+            return
+        }
+        set nop [lindex $cmdline 1]
+        set cns [uplevel namespace current]
+        if {$cns == "::"} {
+            set cns ""
+        }
+        switch -glob $nop {
+            eva* {
+                set nsp [lindex $cmdline 2]
+                if {![string match "::*" $nsp]} {
+                    set nsp ${cns}::$nsp
+                }
+                ttrace::addentry namespace $nsp 1
+            }
+            imp* {
+                # - parse import arguments (skip opt "-force")
+                set opts [lrange $cmdline 2 end]
+                if {[string match "-fo*" [lindex $opts 0]]} {
+                    set opts [lrange $cmdline 3 end]
+                }
+                # - register all imported procs and commands
+                foreach opt $opts {
+                    if {![string match "::*" [::namespace qual $opt]]} {
+                        set opt ${cns}::$opt
+                    }
+                    # - first import procs
+                    foreach entry [ttrace::getentries proc $opt] {
+                        set cmd ${cns}::[::namespace tail $entry]
+                        set nsp [::namespace qual $entry]
+                        set done($cmd) 1
+                        set entry [list 0 $nsp "" ""]
+                        ttrace::addentry proc $cmd $entry
+                    }
+
+                    # - then import commands
+                    foreach entry [info commands $opt] {
+                        set cmd ${cns}::[::namespace tail $entry]
+                        set nsp [::namespace qual $entry]
+                        if {[info exists done($cmd)] == 0} {
+                            set entry [list 0 $nsp "" ""]
+                            ttrace::addentry proc $cmd $entry
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    ttrace::addscript namespace {
+        append res \n
+        foreach entry [ttrace::getentries namespace] {
+            append res "::namespace eval $entry {}" \n
+        }
+        return $res
+    }
+
+    #
+    # Register the "variable" trace. This will create the following key/value
+    # entry in the "variable" store:
+    #
+    #  --- key ----                   --- value ---
+    #  ::fully::qualified::variable   1
+    #
+    # The variable value itself is ignored at the time of
+    # trace/collection. Instead, we take the real value at the time of script
+    # generation.
+    #
+
+    ttrace::addtrace variable {cmdline code args} {
+        if {$code != 0} {
+            return
+        }
+        set opts [lrange $cmdline 1 end]
+        if {[llength $opts]} {
+            set cns [uplevel namespace current]
+            if {$cns == "::"} {
+                set cns ""
+            }
+            foreach {var val} $opts {
+                if {![string match "::*" $var]} {
+                    set var ${cns}::$var
+                }
+                ttrace::addentry variable $var 1
+            }
+        }
+    }
+
+    ttrace::addscript variable {
+        append res \n
+        foreach entry [ttrace::getentries variable] {
+            set cns [namespace qual $entry]
+            set var [namespace tail $entry]
+            append res "::namespace eval $cns {" \n
+            append res "::variable $var"
+            if {[array exists $entry]} {
+                append res "\n::array set $var [list [array get $entry]]" \n
+            } elseif {[info exists $entry]} {
+                append res " [list [set $entry]]" \n
+            } else {
+                append res \n
+            }
+            append res "}" \n
+        }
+        return $res
+    }
+
+
+    #
+    # Register the "rename" trace. It will create the following key/value pair
+    # in "rename" store:
+    #
+    #  --- key ----              --- value ---
+    #  ::fully::qualified::old  ::fully::qualified::new
+    #
+    # The "new" value may be empty, for commands that have been deleted. In
+    # such cases we also remove any traced procedure definitions.
+    #
+
+    ttrace::addtrace rename {cmdline code args} {
+        if {$code != 0} {
+            return
+        }
+        set cns [uplevel namespace current]
+        if {$cns == "::"} {
+            set cns ""
+        }
+        set old [lindex $cmdline 1]
+        if {![string match "::*" $old]} {
+            set old ${cns}::$old
+        }
+        set new [lindex $cmdline 2]
+        if {$new != ""} {
+            if {![string match "::*" $new]} {
+                set new ${cns}::$new
+            }
+            ttrace::addentry rename $old $new
+        } else {
+            ttrace::delentry proc $old
+        }
+    }
+
+    ttrace::addscript rename {
+        append res \n
+        foreach old [ttrace::getentries rename] {
+            set new [ttrace::getentry rename $old]
+            append res "::rename $old {$new}" \n
+        }
+        return $res
+    }
+
+    #
+    # Register the "proc" trace. This will create the following key/value pair
+    # in the "proc" store:
+    #
+    #  --- key ----              --- value ---
+    #  ::fully::qualified::proc  [list <epoch> <ns> <arglist> <body>]
+    #
+    # The <epoch> chages anytime one (re)defines a proc.  The <ns> is the
+    # namespace where the command was imported from. If empty, the <arglist>
+    # and <body> will hold the actual procedure definition. See the
+    # "namespace" tracer implementation also.
+    #
+
+    ttrace::addtrace proc {cmdline code args} {
+        if {$code != 0} {
+            return
+        }
+        set cns [uplevel namespace current]
+        if {$cns == "::"} {
+            set cns ""
+        }
+        set cmd [lindex $cmdline 1]
+        if {![string match "::*" $cmd]} {
+            set cmd ${cns}::$cmd
+        }
+        set dargs [info args $cmd]
+        set pbody [info body $cmd]
+        set pargs ""
+        foreach arg $dargs {
+            if {![info default $cmd $arg def]} {
+                lappend pargs $arg
+            } else {
+                lappend pargs [list $arg $def]
+            }
+        }
+        set pdef [ttrace::getentry proc $cmd]
+        if {$pdef == ""} {
+            set epoch -1 ; # never traced before
+        } else {
+            set epoch [lindex $pdef 0]
+        }
+        ttrace::addentry proc $cmd [list [incr epoch] "" $pargs $pbody]
+    }
+
+    ttrace::addscript proc {
+        return {
+            if {[info command ::tcl::unknown] == ""} {
+                rename ::unknown ::tcl::unknown
+                namespace import -force ::ttrace::unknown
+            }
+            if {[info command ::tcl::info] == ""} {
+                rename ::info ::tcl::info
+            }
+            proc ::info args {
+                set cmd [lindex $args 0]
+                set hit [lsearch -glob {commands procs args default body} $cmd*]
+                if {$hit > 1} {
+                    if {[catch {uplevel ::tcl::info $args}]} {
+                        uplevel ttrace::_resolve [list [lindex $args 1]]
+                    }
+                    return [uplevel ::tcl::info $args]
+                }
+                if {$hit == -1} {
+                    return [uplevel ::tcl::info $args]
+                }
+                set cns [uplevel namespace current]
+                if {$cns == "::"} {
+                    set cns ""
+                }
+                set pat [lindex $args 1]
+                if {![string match "::*" $pat]} {
+                    set pat ${cns}::$pat
+                }
+                set fns [ttrace::getentries proc $pat]
+                if {[string match $cmd* commands]} {
+                    set fns [concat $fns [ttrace::getentries xotcl $pat]]
+                }
+                foreach entry $fns {
+                    if {$cns != [namespace qual $entry]} {
+                        set lazy($entry) 1
+                    } else {
+                        set lazy([namespace tail $entry]) 1
+                    }
+                }
+                foreach entry [uplevel ::tcl::info $args] {
+                    set lazy($entry) 1
+                }
+                array names lazy
+            }
+        }
+    }
+
+    #
+    # Register procedure resolver. This will try to resolve the command in the
+    # current namespace first, and if not found, in global namespace.  It also
+    # handles commands imported from other namespaces.
+    #
+
+    ttrace::addresolver resolveprocs {cmd {export 0}} {
+        set cns [uplevel namespace current]
+        set name [namespace tail $cmd]
+        if {$cns == "::"} {
+            set cns ""
+        }
+        if {![string match "::*" $cmd]} {
+            set ncmd ${cns}::$cmd
+            set gcmd ::$cmd
+        } else {
+            set ncmd $cmd
+            set gcmd $cmd
+        }
+        set pdef [ttrace::getentry proc $ncmd]
+        if {$pdef == ""} {
+            set pdef [ttrace::getentry proc $gcmd]
+            if {$pdef == ""} {
+                return 0
+            }
+            set cmd $gcmd
+        } else {
+            set cmd $ncmd
+        }
+        set epoch [lindex $pdef 0]
+        set pnsp  [lindex $pdef 1]
+        if {$pnsp != ""} {
+            set nsp [namespace qual $cmd]
+            if {$nsp == ""} {
+                set nsp ::
+            }
+            set cmd ${pnsp}::$name
+            if {[resolveprocs $cmd 1] == 0 && [info commands $cmd] == ""} {
+                return 0
+            }
+            namespace eval $nsp "namespace import -force $cmd"
+        } else {
+            uplevel 0 [list ::proc $cmd [lindex $pdef 2] [lindex $pdef 3]]
+            if {$export} {
+                set nsp [namespace qual $cmd]
+                if {$nsp == ""} {
+                    set nsp ::
+                }
+                namespace eval $nsp "namespace export $name"
+            }
+        }
+        variable resolveproc
+        set resolveproc($cmd) $epoch
+        return 1
+    }
+
+    #
+    # For XOTcl, the entire item introspection/tracing is delegated to XOTcl
+    # itself. The xotcl store is filled with this:
+    #
+    #  --- key ----               --- value ---
+    #  ::fully::qualified::item   <body>
+    #
+    # The <body> is the script used to generate the entire item (class,
+    # object). Note that we do not fill in this during code tracing. It is
+    # done during the script generation. In this step, only the placeholder is
+    # set.
+    #
+    # NOTE: we assume all XOTcl commands are imported in global namespace
+    #
+
+    ttrace::atenable XOTclEnabler {args} {
+        if {[info commands ::xotcl::Class] == ""} {
+            return
+        }
+        if {[info commands ::xotcl::_creator] == ""} {
+            ::xotcl::Class create ::xotcl::_creator -instproc create {args} {
+                set result [next]
+                if {![string match ::xotcl::_* $result]} {
+                    ttrace::addentry xotcl $result ""
+                }
+                return $result
+            }
+        }
+        ::xotcl::Class instmixin ::xotcl::_creator
+    }
+
+    ttrace::atdisable XOTclDisabler {args} {
+        if {   [info commands ::xotcl::Class] == ""
+            || [info commands ::xotcl::_creator] == ""} {
+            return
+        }
+        ::xotcl::Class instmixin ""
+        ::xotcl::_creator destroy
+    }
+
+    set resolver [ttrace::addresolver resolveclasses {classname} {
+        set cns [uplevel namespace current]
+        set script [ttrace::getentry xotcl $classname]
+        if {$script == ""} {
+            set name [namespace tail $classname]
+            if {$cns == "::"} {
+                set script [ttrace::getentry xotcl ::$name]
+            } else {
+                set script [ttrace::getentry xotcl ${cns}::$name]
+                if {$script == ""} {
+                    set script [ttrace::getentry xotcl ::$name]
+                }
+            }
+            if {$script == ""} {
+                return 0
+            }
+        }
+        uplevel [list namespace eval $cns $script]
+        return 1
+    }]
+
+    ttrace::addscript xotcl [subst -nocommands {
+        if {![catch {Serializer new} ss]} {
+            foreach entry [ttrace::getentries xotcl] {
+                if {[ttrace::getentry xotcl \$entry] == ""} {
+                    ttrace::addentry xotcl \$entry [\$ss serialize \$entry]
+                }
+            }
+            \$ss destroy
+            return {::xotcl::Class proc __unknown name {$resolver \$name}}
+        }
+    }]
+
+    #
+    # Register callback to be called on cleanup. This will trash lazily loaded
+    # procs which have changed since.
+    #
+
+    ttrace::addcleanup {
+        variable resolveproc
+        foreach cmd [array names resolveproc] {
+            set def [ttrace::getentry proc $cmd]
+            if {$def != ""} {
+                set new [lindex $def 0]
+                set old $resolveproc($cmd)
+                if {[info command $cmd] != "" && $new != $old} {
+                    catch {rename $cmd ""}
+                }
+            }
+        }
+    }
+}
+

+# EOF
+return
+
+# Local Variables:
+# mode: tcl
+# fill-column: 78
+# tab-width: 8
+# indent-tabs-mode: nil
+# End:


Property changes on: trunk/Master/tlpkg/tltcl/lib/thread2.8.7/ttrace.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/cscroll.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/cscroll.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/cscroll.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -114,7 +114,7 @@
     # Support for mousewheels on Linux/Unix commonly comes through mapping
     # the wheel to the extended buttons.  If you have a mousewheel, find
     # Linux configuration info at:
-    #	http://linuxreviews.org/howtos/xfree/mouse/
+    #	https://linuxreviews.org/HOWTO_change_the_mouse_speed_in_X
     bind $c <Button-4> {
 	if {!$tk_strictMotif} {
 	    %W yview scroll -5 units

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menu.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menu.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menu.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -134,6 +134,8 @@
 foreach i {{An entry} {Another entry} {Does nothing} {Does almost nothing} {Make life meaningful}} {
     $m add command -label $i -command [list puts "You invoked \"$i\""]
 }
+set emojiLabel [encoding convertfrom utf-8 "\xF0\x9F\x98\x8D Make friends"]
+$m add command -label $emojiLabel -command [list puts "Menu labels can include non-BMP characters."]
 $m entryconfigure "Does almost nothing" -bitmap questhead -compound left \
 	-command [list \
 	tk_dialog $w.compound {Compound Menu Entry} \

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/widget
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/widget	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/widget	2022-03-14 10:03:11 UTC (rev 62700)
@@ -624,7 +624,7 @@
     wm title $top [mc "Demo code: %s" [file join $tk_demoDirectory $file]]
     wm iconname $top $file
     set id [open [file join $tk_demoDirectory $file]]
-    fconfigure $id -encoding utf-8 -eofchar \032
+    fconfigure $id -encoding utf-8 -eofchar "\032 {}"
     $top.f.text delete 1.0 end
     $top.f.text insert 1.0 [read $id]
     $top.f.text mark set insert 1.0

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/fontchooser.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/fontchooser.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/fontchooser.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -247,6 +247,7 @@
         grid $S(W).lfonts x $S(W).lstyles x $S(W).lsizes x ^     -in $outer -sticky news
         grid $WE          x $WS           - -            x ^     -in $outer -sticky news -pady {15 30}
         grid configure $bbox -sticky n
+        grid rowconfigure $outer 2 -weight 1
         grid columnconfigure $outer {1 3 5} -minsize $minsize(gap)
         grid columnconfigure $outer {0 2 4} -weight 1
         grid columnconfigure $outer 0 -minsize $minsize(fonts)

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/icons.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/icons.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/icons.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -4,7 +4,7 @@
 #	were provided by the Tango Desktop project which provides a
 #	unified set of high quality icons licensed under the
 #	Creative Commons Attribution Share-Alike license
-#	(http://creativecommons.org/licenses/by-sa/3.0/)
+#	(https://creativecommons.org/licenses/by-sa/3.0/)
 #
 #	See http://tango.freedesktop.org/Tango_Desktop_Project
 #

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/listbox.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/listbox.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/listbox.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -214,7 +214,7 @@
     # Support for mousewheels on Linux/Unix commonly comes through mapping
     # the wheel to the extended buttons.  If you have a mousewheel, find
     # Linux configuration info at:
-    #	http://linuxreviews.org/howtos/xfree/mouse/
+    #	https://linuxreviews.org/HOWTO_change_the_mouse_speed_in_X
     bind Listbox <4> {
 	if {!$tk_strictMotif} {
 	    %W yview scroll -5 units
@@ -296,7 +296,7 @@
 	}
 	extended {
 	    set i $Priv(listboxPrev)
-	    if {$i eq ""} {
+	    if {$i < 0} {
 		set i $el
 		$w selection set $el
 	    }

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/menu.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/menu.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/menu.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -6,7 +6,7 @@
 #
 # Copyright (c) 1992-1994 The Regents of the University of California.
 # Copyright (c) 1994-1997 Sun Microsystems, Inc.
-# Copyright (c) 1998-1999 by Scriptics Corporation.
+# Copyright (c) 1998-1999 Scriptics Corporation.
 # Copyright (c) 2007 Daniel A. Steffen <das at users.sourceforge.net>
 #
 # See the file "license.terms" for information on usage and redistribution
@@ -269,8 +269,8 @@
 	MenuUnpost {}
     }
     if {$::tk_strictMotif} {
-        set Priv(cursor) [$w cget -cursor]
-        $w configure -cursor arrow
+	set Priv(cursor) [$w cget -cursor]
+	$w configure -cursor arrow
     }
     if {[tk windowingsystem] ne "aqua"} {
 	set Priv(relief) [$w cget -relief]
@@ -343,7 +343,7 @@
 	    $menu unpost
 	    set Priv(postedMb) {}
 	    if {$::tk_strictMotif} {
-	        $mb configure -cursor $Priv(cursor)
+		$mb configure -cursor $Priv(cursor)
 	    }
 	    if {[tk windowingsystem] ne "aqua"} {
 		$mb configure -relief $Priv(relief)
@@ -475,7 +475,7 @@
 proc ::tk::MenuMotion {menu x y state} {
     variable ::tk::Priv
     if {$menu eq $Priv(window)} {
-        set activeindex [$menu index active]
+	set active [$menu index active]
 	if {[$menu cget -type] eq "menubar"} {
 	    if {[info exists Priv(focus)] && $menu ne $Priv(focus)} {
 		$menu activate @$x,$y
@@ -485,24 +485,24 @@
 	    $menu activate @$x,$y
 	    GenerateMenuSelect $menu
 	}
-        set index [$menu index @$x,$y]
-        if {[info exists Priv(menuActivated)] \
-                && $index ne "none" \
-                && $index ne $activeindex} {
-            set mode [option get $menu clickToFocus ClickToFocus]
-            if {[string is false $mode]} {
-                set delay [expr {[$menu cget -type] eq "menubar" ? 0 : 50}]
-                if {[$menu type $index] eq "cascade"} {
-                    # Catch these postcascade commands since the menu could be
-                    # destroyed before they run.
-                    set Priv(menuActivatedTimer) \
-                        [after $delay "catch {$menu postcascade active}"]
-                } else {
-                    set Priv(menuDeactivatedTimer) \
-                        [after $delay "catch {$menu postcascade none}"]
-                }
-            }
-        }
+	set index [$menu index @$x,$y]
+	if {[info exists Priv(menuActivated)] \
+		&& $index ne "none" \
+		&& $index ne $active} {
+	    set mode [option get $menu clickToFocus ClickToFocus]
+	    if {[string is false $mode]} {
+		set delay [expr {[$menu cget -type] eq "menubar" ? 0 : 50}]
+		if {[$menu type $index] eq "cascade"} {
+		    # Catch these postcascade commands since the menu could be
+		    # destroyed before they run.
+		    set Priv(menuActivatedTimer) \
+			[after $delay "catch {$menu postcascade active}"]
+		} else {
+		    set Priv(menuDeactivatedTimer) \
+			[after $delay "catch {$menu postcascade none}"]
+		}
+	    }
+	}
     }
 }
 
@@ -525,13 +525,13 @@
     variable ::tk::Priv
 
     if {![winfo viewable $menu]} {
-        return
+	return
     }
     if {[$menu index active] eq "none"} {
-        if {[$menu cget -type] ne "menubar" } {
-            set Priv(window) {}
-        }
-        return
+	if {[$menu cget -type] ne "menubar" } {
+	    set Priv(window) {}
+	}
+	return
     }
     $menu postcascade active
     if {$Priv(postedMb) ne "" && [winfo viewable $Priv(postedMb)]} {
@@ -552,7 +552,7 @@
 	    if {[$menu type active] eq "cascade"} {
 		set Priv(menuActivated) 1
 	    }
-        }
+	}
 
 	# Don't update grab information if the grab window isn't changing.
 	# Otherwise, we'll get an error when we unpost the menus and
@@ -893,7 +893,7 @@
 
     foreach child $windowlist {
 	# Don't descend into other toplevels.
-        if {[winfo toplevel $w] ne [winfo toplevel $child]} {
+	if {[winfo toplevel $w] ne [winfo toplevel $child]} {
 	    continue
 	}
 	if {[winfo class $child] eq "Menu" && \
@@ -919,7 +919,7 @@
 
     foreach child $windowlist {
 	# Don't descend into other toplevels.
-        if {[winfo toplevel $w] ne [winfo toplevel $child]} {
+	if {[winfo toplevel $w] ne [winfo toplevel $child]} {
 	    continue
 	}
 	switch -- [winfo class $child] {
@@ -941,7 +941,7 @@
 	    }
 	}
     }
-    return {}
+    return ""
 }
 
 # ::tk::TraverseToMenu --
@@ -1115,7 +1115,7 @@
     }
     set last [$menu index last]
     if {$last eq "none"} {
-	return
+	return ""
     }
     for {set i 0} {$i <= $last} {incr i} {
 	if {![catch {$menu entrycget $i -label} label]} {
@@ -1186,7 +1186,7 @@
 		# if we go offscreen to the top, show as 'below'
 		if {$y < [winfo vrooty $button]} {
 		    set y [expr {[winfo vrooty $button] + [winfo rooty $button]\
-                           + [winfo reqheight $button]}]
+			   + [winfo reqheight $button]}]
 		}
 		set entry {}
 	    }
@@ -1340,14 +1340,12 @@
 proc ::tk::GenerateMenuSelect {menu} {
     variable ::tk::Priv
 
-    if {$Priv(activeMenu) eq $menu \
-	    && $Priv(activeItem) eq [$menu index active]} {
-	return
+    if {$Priv(activeMenu) ne $menu \
+	    || $Priv(activeItem) ne [$menu index active]} {
+	set Priv(activeMenu) $menu
+	set Priv(activeItem) [$menu index active]
+	event generate $menu <<MenuSelect>>
     }
-
-    set Priv(activeMenu) $menu
-    set Priv(activeItem) [$menu index active]
-    event generate $menu <<MenuSelect>>
 }
 
 # ::tk_popup --
@@ -1369,7 +1367,7 @@
     }
     tk::PostOverPoint $menu $x $y $entry
     if {[tk windowingsystem] eq "x11" && [winfo viewable $menu]} {
-        tk::SaveGrabInfo $menu
+	tk::SaveGrabInfo $menu
 	grab -global $menu
 	set Priv(popup) $menu
 	set Priv(window) $menu

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/pkgIndex.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/pkgIndex.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -1,7 +1,7 @@
-if {[catch {package present Tcl 8.6.0}]} return
+if {![package vsatisfies [package provide Tcl] 8.6.0]} return
 if {($::tcl_platform(platform) eq "unix") && ([info exists ::env(DISPLAY)]
 	|| ([info exists ::argv] && ("-display" in $::argv)))} {
-    package ifneeded Tk 8.6.11 [list load [file normalize [file join $dir .. .. bin libtk8.6.dll]] Tk]
+    package ifneeded Tk 8.6.12 [list load [file normalize [file join $dir .. .. bin libtk8.6.dll]]]
 } else {
-    package ifneeded Tk 8.6.11 [list load [file normalize [file join $dir .. .. bin tk86.dll]] Tk]
+    package ifneeded Tk 8.6.12 [list load [file normalize [file join $dir .. .. bin tk86.dll]]]
 }

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/tearoff.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/tearoff.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/tearoff.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -79,11 +79,11 @@
     }
 
     if {[tk windowingsystem] eq "win32"} {
-        # [Bug 3181181]: Find the toplevel window for the menu
-        set parent [winfo toplevel $parent]
-        while {[winfo class $parent] eq "Menu"} {
-            set parent [winfo toplevel [winfo parent $parent]]
-        }
+	# [Bug 3181181]: Find the toplevel window for the menu
+	set parent [winfo toplevel $parent]
+	while {[winfo class $parent] eq "Menu"} {
+	    set parent [winfo toplevel [winfo parent $parent]]
+	}
 	wm transient $menu [winfo toplevel $parent]
 	wm attributes $menu -toolwindow 1
     }
@@ -135,7 +135,7 @@
     }
     eval $cmd
     set last [$src index last]
-    if {$last eq "none"} {
+    if {$last eq "none" || $last < 0} {
 	return
     }
     for {set i [$src cget -tearoff]} {$i <= $last} {incr i} {

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/text.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/text.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/text.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -499,7 +499,7 @@
     # Support for mousewheels on Linux/Unix commonly comes through mapping
     # the wheel to the extended buttons.  If you have a mousewheel, find
     # Linux configuration info at:
-    #	http://linuxreviews.org/howtos/xfree/mouse/
+    #	https://linuxreviews.org/HOWTO_change_the_mouse_speed_in_X
     bind Text <4> {
 	if {!$tk_strictMotif} {
 	    %W yview scroll -50 pixels

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/tk.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/tk.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/tk.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -11,7 +11,7 @@
 # this file, and for a DISCLAIMER OF ALL WARRANTIES.
 
 # Verify that we have Tk binary and script components from the same release
-package require -exact Tk  8.6.11
+package require -exact Tk  8.6.12
 

 # Create a ::tk namespace
 namespace eval ::tk {
@@ -460,7 +460,7 @@
 	event add <<ContextMenu>>	<Button-2>
 
 	# Official bindings
-	# See http://support.apple.com/kb/HT1343
+	# See https://support.apple.com/en-us/HT201236
 	event add <<SelectAll>>		<Command-Key-a>
 	event add <<Undo>>		<Command-Key-z> <Command-Lock-Key-Z>
 	event add <<Redo>>		<Shift-Command-Key-z> <Shift-Command-Lock-Key-z>

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/tkAppInit.c
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/tkAppInit.c	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/tkAppInit.c	2022-03-14 10:03:11 UTC (rev 62700)
@@ -16,12 +16,16 @@
 #undef STATIC_BUILD
 #include "tk.h"
 #include "tkPort.h"
+#if TCL_MAJOR_VERSION < 9 && TCL_MINOR_VERSION < 7
+#   define Tcl_LibraryInitProc Tcl_PackageInitProc
+#   define Tcl_StaticLibrary Tcl_StaticPackage
+#endif
 
 #ifdef TK_TEST
 #ifdef __cplusplus
 extern "C" {
 #endif
-extern Tcl_PackageInitProc Tktest_Init;
+extern Tcl_LibraryInitProc Tktest_Init;
 #ifdef __cplusplus
 }
 #endif
@@ -120,12 +124,11 @@
     if (Tk_Init(interp) == TCL_ERROR) {
 	return TCL_ERROR;
     }
-    Tcl_StaticPackage(interp, "Tk", Tk_Init, Tk_SafeInit);
+    Tcl_StaticLibrary(interp, "Tk", Tk_Init, Tk_SafeInit);
 
 #if defined(USE_CUSTOM_EXIT_PROC)
     if (TkpWantsExitProc()) {
-	/* The cast below avoids warnings from old gcc compilers. */
-	Tcl_SetExitProc((void *)TkpExitProc);
+	Tcl_SetExitProc(TkpExitProc);
     }
 #endif
 
@@ -133,7 +136,7 @@
     if (Tktest_Init(interp) == TCL_ERROR) {
 	return TCL_ERROR;
     }
-    Tcl_StaticPackage(interp, "Tktest", Tktest_Init, 0);
+    Tcl_StaticLibrary(interp, "Tktest", Tktest_Init, 0);
 #endif /* TK_TEST */
 
     /*

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/aquaTheme.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/aquaTheme.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/aquaTheme.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -42,6 +42,9 @@
 	# so we only need to specify !focus.)
 
 	# Entry
+	ttk::style configure TEntry \
+	    -foreground systemTextColor \
+	    -background systemTextBackgroundColor
 	ttk::style map TEntry \
 	    -foreground {
 		disabled systemDisabledControlTextColor
@@ -60,6 +63,9 @@
 	    }
 
 	# Spinbox
+	ttk::style configure TSpinbox \
+	    -foreground systemTextColor \
+	    -background systemTextBackgroundColor
 	ttk::style map TSpinbox \
 	    -foreground {
 		disabled systemDisabledControlTextColor

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/menubutton.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/menubutton.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/menubutton.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -83,9 +83,8 @@
 	set mw [winfo reqwidth $menu]
 	set bw [winfo width $mb]
 	set dF [expr {[winfo width $mb] - [winfo reqwidth $menu] - $menuPad}]
-	set entry ""
 	set entry [::tk::MenuFindName $menu [$mb cget -text]]
-	if {$entry eq ""} {
+	if {$entry < 0} {
 	    set entry 0
 	}
 	set x [winfo rootx $mb]
@@ -124,9 +123,8 @@
 	    incr mh 6
 	    incr mw 16
 	}
-	set entry {}
 	set entry [::tk::MenuFindName $menu [$mb cget -text]]
-	if {$entry eq {}} {
+	if {$entry < 0} {
 	    set entry 0
 	}
 	set x [winfo rootx $mb]
@@ -133,16 +131,16 @@
 	set y [winfo rooty $mb]
 	switch [$mb cget -direction] {
 	    above {
-		set entry {}
+		set entry ""
 		incr y -$mh
 		# if we go offscreen to the top, show as 'below'
 		if {$y < [winfo vrooty $mb]} {
 		    set y [expr {[winfo vrooty $mb] + [winfo rooty $mb]\
-                           + [winfo reqheight $mb]}]
+			    + [winfo reqheight $mb]}]
 		}
 	    }
 	    below {
-		set entry {}
+		set entry ""
 		incr y $bh
 		# if we go offscreen to the bottom, show as 'above'
 		if {($y + $mh) > ([winfo vrooty $mb] + [winfo vrootheight $mb])} {
@@ -196,7 +194,7 @@
     $mb state pressed
     $mb configure -cursor [$menu cget -cursor]
     foreach {x y entry} [PostPosition $mb $menu] { break }
-    if {$entry ne {}} {
+    if {$entry >= 0} {
 	$menu post $x $y $entry
     } else {
 	$menu post $x $y
@@ -228,7 +226,7 @@
 #
 proc ttk::menubutton::FindMenuEntry {menu s} {
     set last [$menu index last]
-    if {$last eq "none" || $last eq ""} {
+    if {$last eq "none" || $last < 0} {
 	return ""
     }
     for {set i 0} {$i <= $last} {incr i} {

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/notebook.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/notebook.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/notebook.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -57,11 +57,13 @@
 #	Select the next/previous tab in the list.
 #
 proc ttk::notebook::CycleTab {w dir} {
-    if {[$w index end] != 0} {
-	set current [$w index current]
-	set select [expr {($current + $dir) % [$w index end]}]
-	while {[$w tab $select -state] != "normal" && ($select != $current)} {
-	    set select [expr {($select + $dir) % [$w index end]}]
+    set current [$w index current]
+    if {$current >= 0} {
+	set tabCount [$w index end]
+	set select [expr {($current + $dir) % $tabCount}]
+	set step [expr {$dir > 0 ? 1 : -1}]
+	while {[$w tab $select -state] ne "normal" && ($select != $current)} {
+	    set select [expr {($select + $step) % $tabCount}]
 	}
 	if {$select != $current} {
 	    ActivateTab $w $select

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scrollbar.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scrollbar.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scrollbar.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -29,8 +29,6 @@
     x11 {
         lappend eventList <Button-4> <Button-5> \
                 <Shift-Button-4> <Shift-Button-5>
-        # For tk 8.7, the event list will be extended by
-        # <Button-6> <Button-7>
     }
 }
 foreach event $eventList {

Modified: trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/utils.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/utils.tcl	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/utils.tcl	2022-03-14 10:03:11 UTC (rev 62700)
@@ -303,19 +303,14 @@
     }
     if {[tk windowingsystem] eq "aqua"} {
 	bind $bindtag <MouseWheel> "$callback \[expr {-%D}\]"
-	bind $bindtag <Option-MouseWheel> "$callback \[expr {-10*%D}\]"
+	bind $bindtag <Option-MouseWheel> "$callback \[expr {-10 * %D}\]"
     } else {
-	bind $bindtag <MouseWheel> "$callback \[expr {-%D/120)}\]"
+	bind $bindtag <MouseWheel> "$callback \[expr {-%D / 120}\]"
     }
 }
 
 ## Mousewheel bindings for standard scrollable widgets.
 #
-# Usage: [ttk::copyBindings TtkScrollable $bindtag]
-#
-# $bindtag should be for a widget that supports the
-# standard scrollbar protocol.
-#
 
 if {[tk windowingsystem] eq "x11"} {
     bind TtkScrollable <Button-4>       { %W yview scroll -5 units }
@@ -325,18 +320,18 @@
 }
 if {[tk windowingsystem] eq "aqua"} {
     bind TtkScrollable <MouseWheel> \
-	    { %W yview scroll [expr {-(%D)}] units }
+	    { %W yview scroll [expr {-%D}] units }
     bind TtkScrollable <Shift-MouseWheel> \
-	    { %W xview scroll [expr {-(%D)}] units }
+	    { %W xview scroll [expr {-%D}] units }
     bind TtkScrollable <Option-MouseWheel> \
-	    { %W yview scroll  [expr {-10 * (%D)}] units }
+	    { %W yview scroll  [expr {-10 * %D}] units }
     bind TtkScrollable <Shift-Option-MouseWheel> \
-	    { %W xview scroll [expr {-10 * (%D)}] units }
+	    { %W xview scroll [expr {-10 * %D}] units }
 } else {
     bind TtkScrollable <MouseWheel> \
-	    { %W yview scroll [expr {-(%D / 120)}] units }
+	    { %W yview scroll [expr {-%D / 120}] units }
     bind TtkScrollable <Shift-MouseWheel> \
-	    { %W xview scroll [expr {-(%D / 120)}] units }
+	    { %W xview scroll [expr {-%D / 120}] units }
 }
 
 #*EOF*

Modified: trunk/Master/tlpkg/tltcl/lib/tkConfig.sh
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tkConfig.sh	2022-03-14 09:53:53 UTC (rev 62699)
+++ trunk/Master/tlpkg/tltcl/lib/tkConfig.sh	2022-03-14 10:03:11 UTC (rev 62700)
@@ -17,10 +17,10 @@
 TK_VERSION='8.6'
 TK_MAJOR_VERSION='8'
 TK_MINOR_VERSION='6'
-TK_PATCH_LEVEL='.11'
+TK_PATCH_LEVEL='.12'
 
 # -D flags for use with the C compiler.
-TK_DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -DMODULE_SCOPE=extern -DHAVE_NO_SEH=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UXTHEME_H=1 -DHAVE_VSSYM32_H=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 '
+TK_DEFS='-DPACKAGE_NAME=\"tk\" -DPACKAGE_TARNAME=\"tk\" -DPACKAGE_VERSION=\"8.6\" -DPACKAGE_STRING=\"tk\ 8.6\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DTCL_THREADS=1 -DUSE_THREAD_ALLOC=1 -DMODULE_SCOPE=extern -DHAVE_NO_SEH=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_UXTHEME_H=1 -DHAVE_VSSYM32_H=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 '
 
 # Flag, 1: we built a shared lib, 0 we didn't
 TK_SHARED_BUILD=1
@@ -36,11 +36,11 @@
 
 # Top-level directory in which Tcl's platform-independent files are
 # installed.
-TK_PREFIX='/home/siepo/tltcl'
+TK_PREFIX='/tmp/tltcl'
 
 # Top-level directory in which Tcl's platform-specific files (e.g.
 # executables) are installed.
-TK_EXEC_PREFIX='/home/siepo/tltcl'
+TK_EXEC_PREFIX='/tmp/tltcl'
 
 # -l flag to pass to the linker to pick up the Tcl library
 TK_LIB_FLAG='-ltk86'
@@ -47,11 +47,11 @@
 
 # String to pass to linker to pick up the Tk library from its
 # build directory.
-TK_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tk8.6.11/win -ltk86'
+TK_BUILD_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tk8.6.12/win -ltk86'
 
 # String to pass to linker to pick up the Tk library from its
 # installed directory.
-TK_LIB_SPEC='-L/home/siepo/tltcl/lib -ltk86'
+TK_LIB_SPEC='-L/tmp/tltcl/lib -ltk86'
 
 # Location of the top-level source directory from which Tk was built.
 # This is the directory that contains a README file as well as
@@ -59,7 +59,7 @@
 # different place than the directory containing the source files, this
 # points to the location of the sources, not the location where Tk was
 # compiled.
-TK_SRC_DIR='/home/siepo/xdrive/tltcl/tk8.6.11'
+TK_SRC_DIR='/home/siepo/xdrive/tltcl/tk8.6.12'
 
 # Needed if you want to make a 'fat' shared library library
 # containing tk objects or link a different wish.
@@ -74,14 +74,14 @@
 
 # String to pass to linker to pick up the Tk stub library from its
 # build directory.
-TK_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tk8.6.11/win -ltkstub86'
+TK_BUILD_STUB_LIB_SPEC='-L/home/siepo/xdrive/tltcl/tk8.6.12/win -ltkstub86'
 
 # String to pass to linker to pick up the Tk stub library from its
 # installed directory.
-TK_STUB_LIB_SPEC='-L/home/siepo/tltcl/lib -ltkstub86'
+TK_STUB_LIB_SPEC='-L/tmp/tltcl/lib -ltkstub86'
 
 # Path to the Tk stub library in the build directory.
-TK_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tk8.6.11/win/libtkstub86.a'
+TK_BUILD_STUB_LIB_PATH='/home/siepo/xdrive/tltcl/tk8.6.12/win/libtkstub86.a'
 
 # Path to the Tk stub library in the install directory.
-TK_STUB_LIB_PATH='/home/siepo/tltcl/lib/libtkstub86.a'
+TK_STUB_LIB_PATH='/tmp/tltcl/lib/libtkstub86.a'



More information about the tex-live-commits mailing list.