Index: /other-projects/trunk/greenorg/Makefile.in
===================================================================
--- /other-projects/trunk/greenorg/Makefile.in	(revision 14149)
+++ /other-projects/trunk/greenorg/Makefile.in	(revision 14149)
@@ -0,0 +1,107 @@
+###########################################################################
+#
+# Makefile -- gsdl
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 1999  The New Zealand Digital Library Project
+#
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+srcdir = @srcdir@
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+@SET_MAKE@
+CC = @CC@
+CXX = @CXX@
+CFLAGS = @CFLAGS@
+CXXFLAGS = @CXXFLAGS@
+LIBS   = @LIBS@
+MDEFINES =
+TOPSRC = `pwd`
+
+GSDLOS = @gsdlos@
+
+COMPILE = $(CC) -c
+
+SOURCES = 
+
+OBJECTS = 
+
+ALLFILES = $(OBJECTS)
+
+INSTALLDIRS = src/recpt
+
+MODULEDIRS = @MODULEDIRS@
+
+OTHERDIRS = lib src/recpt
+
+all:
+	for odir in $(OTHERDIRS); do \
+	  echo making $@ in $$odir; \
+	  (cd $$odir && $(MAKE) $(MDEFINES) $@) || exit 1; \
+	done
+
+#	for odir in $(MODULEDIRS); do \
+#	  echo making $@ in $$odir; \
+#	  (cd $$odir && $(MAKE) $(MDEFINES) $@) || exit 1; \
+#	done
+
+install: all
+
+	for idir in $(INSTALLDIRS); do \
+	  echo installing $$idir; \
+	  (cd $$idir && $(MAKE) install) || exit 1; \
+	done
+
+# added test to check existence of Makefile, as src/recpt is in
+# both INSTALLDIRS and OTHERDIRS - can't make distclean twice!
+distclean: clean
+	rm -f Makefile config.cache config.h config.log stamp-h config.status
+	for subdir in $(INSTALLDIRS) $(OTHERDIRS); do \
+	  echo cleaning $@ in $$subdir; \
+	  (cd $$subdir && if test -e Makefile; then $(MAKE) distclean;fi) || exit 1; \
+	done
+
+clean:
+	for subdir in $(INSTALLDIRS) $(OTHERDIRS); do \
+	  echo cleaning $@ in $$subdir; \
+	  (cd $$subdir && $(MAKE) clean) || exit 1; \
+	done
+
+# For an explanation of the following Makefile rules, see node
+# `Automatic Remaking' in GNU Autoconf documentation.
+Makefile: Makefile.in config.status
+	CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
+config.status: configure
+	./config.status --recheck
+configure: configure.in aclocal.m4
+	cd $(srcdir) && autoconf
+
+config.h: stamp-h
+stamp-h: config.h.in config.status
+	CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
+config.h.in: stamp-h.in
+stamp-h.in: configure.in aclocal.m4 acconfig.h
+	cd $(srcdir) && autoheader
+	$(TOUCH) $(srcdir)/stamp-h.in
+
+
+
Index: /other-projects/trunk/greenorg/acconfig.h
===================================================================
--- /other-projects/trunk/greenorg/acconfig.h	(revision 14149)
+++ /other-projects/trunk/greenorg/acconfig.h	(revision 14149)
@@ -0,0 +1,50 @@
+/* Special definitions for mg, processed by autoheader.
+   Created by [TS:Aug/95] 
+   by grepping for AC_DEFINE on configure.in and using the appropriate defs 
+   of acconfig.h used by GNU tar.
+*/
+
+/* Define to the name of the distribution.  */
+#undef PACKAGE
+
+/* Define to the version of the distribution.  */
+#undef VERSION
+
+/* Define if `union wait' is the type of the first arg to wait functions.  */
+#undef HAVE_UNION_WAIT
+
+/* Define to 1 if you have the valloc function.  */
+#undef HAVE_VALLOC
+
+/* Define to 1 if ANSI function prototypes are usable.  */
+#undef PROTOTYPES
+ 
+/* Define to 1 for better use of the debugging malloc library.  See
+   site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz.  */
+#undef WITH_DMALLOC
+ 
+/* Define to 1 if GNU regex should be used instead of GNU rx.  */
+#undef WITH_REGEX
+
+/* Some braindead header files do not have the requ'd function declarations */
+#undef HAVE_FGETC_DECL
+#undef HAVE_FREAD_DECL
+
+/* See if have this field in the prstatus_t structure */
+/* It stores the size of the process heap */
+#undef HAVE_PR_BRKSIZE
+
+/* Define FASTCGI if needsbe */
+#undef USE_FASTCGI
+
+/* Define USE_CORBA if needsbe */
+#undef USE_CORBA
+
+/* Define MICO_DIR if needsbe */
+#undef MICO_DIR
+
+/* Define MICO_VERSION if required */
+#undef MICO_VERSION
+
+
+
Index: /other-projects/trunk/greenorg/aclocal.m4
===================================================================
--- /other-projects/trunk/greenorg/aclocal.m4	(revision 14149)
+++ /other-projects/trunk/greenorg/aclocal.m4	(revision 14149)
@@ -0,0 +1,141 @@
+# Local additions to Autoconf macros.
+# Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
+# François Pinard <pinard@iro.umontreal.ca>, 1992.
+
+# [TS:Aug/95] - chopped out the NLS stuff which I don't support
+
+## ------------------------------- ##
+## Check for function prototypes.  ##
+## ------------------------------- ##
+
+AC_DEFUN(fp_C_PROTOTYPES,
+[AC_REQUIRE([fp_PROG_CC_STDC])
+AC_MSG_CHECKING([for function prototypes])
+if test "$ac_cv_prog_cc_stdc" != no; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(PROTOTYPES)
+  U= ANSI2KNR=
+else
+  AC_MSG_RESULT(no)
+  U=_ ANSI2KNR=ansi2knr
+fi
+AC_SUBST(U)dnl
+AC_SUBST(ANSI2KNR)dnl
+])
+
+## ----------------------------------------- ##
+## ANSIfy the C compiler whenever possible.  ##
+## ----------------------------------------- ##
+
+# @defmac AC_PROG_CC_STDC
+# @maindex PROG_CC_STDC
+# @ovindex CC
+# If the C compiler in not in ANSI C mode by default, try to add an option
+# to output variable @code{CC} to make it so.  This macro tries various
+# options that select ANSI C on some system or another.  It considers the
+# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and
+# handles function prototypes correctly.
+#
+# If you use this macro, you should check after calling it whether the C
+# compiler has been set to accept ANSI C; if not, the shell variable
+# @code{ac_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
+# code in ANSI C, you can make an un-ANSIfied copy of it by using the
+# program @code{ansi2knr}, which comes with Ghostscript.
+# @end defmac
+
+AC_DEFUN(fp_PROG_CC_STDC,
+[AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
+AC_CACHE_VAL(ac_cv_prog_cc_stdc,
+[ac_cv_prog_cc_stdc=no
+ac_save_CFLAGS="$CFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX			-Aa -D_HPUX_SOURCE
+# SVR4			-Xc
+for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" -Xc
+do
+  CFLAGS="$ac_save_CFLAGS $ac_arg"
+  AC_TRY_COMPILE(
+[#if !defined(__STDC__) || __STDC__ != 1
+choke me
+#endif	
+], [int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};],
+[ac_cv_prog_cc_stdc="$ac_arg"; break])
+done
+CFLAGS="$ac_save_CFLAGS"
+])
+AC_MSG_RESULT($ac_cv_prog_cc_stdc)
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno) ;;
+  *) CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+])
+
+## --------------------------------------------------------- ##
+## Use AC_PROG_INSTALL, supplementing it with INSTALL_SCRIPT ##
+## substitution.					     ##
+## --------------------------------------------------------- ##
+
+AC_DEFUN(fp_PROG_INSTALL,
+[AC_PROG_INSTALL
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL} -m 755'
+AC_SUBST(INSTALL_SCRIPT)dnl
+])
+
+## ----------------------------------- ##
+## Check if --with-dmalloc was given.  ##
+## ----------------------------------- ##
+
+# I just checked, and GNU rx seems to work fine with a slightly
+# modified GNU m4.  So, I put out the test below in my aclocal.m4,
+# and will try to use it in my things.  The idea is to distribute
+# rx.[hc] and regex.[hc] together, for a while.  The WITH_REGEX symbol
+# (which should also be documented in acconfig.h) is used to decide
+# which of regex.h or rx.h should be included in the application.
+#
+# If `./configure --with-regex' is given, the package will use
+# the older regex.  Else, a check is made to see if rx is already
+# installed, as with newer Linux'es.  If not found, the package will
+# use the rx from the distribution.  If found, the package will use
+# the system's rx which, on Linux at least, will result in a smaller
+# executable file.
+
+AC_DEFUN(fp_WITH_DMALLOC,
+[AC_MSG_CHECKING(if malloc debugging is wanted)
+AC_ARG_WITH(dmalloc,
+[  --with-dmalloc          use dmalloc, as in
+                          ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz],
+[if test "$withval" = yes; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(WITH_DMALLOC)
+  LIBS="$LIBS -ldmalloc"
+  LDFLAGS="$LDFLAGS -g"
+else
+  AC_MSG_RESULT(no)
+fi], [AC_MSG_RESULT(no)])
+])
+
+## --------------------------------- ##
+## Check if --with-regex was given.  ##
+## --------------------------------- ##
+
+AC_DEFUN(fp_WITH_REGEX,
+[AC_MSG_CHECKING(which of rx or regex is wanted)
+AC_ARG_WITH(regex,
+[  --with-regex            use older regex in lieu of GNU rx for matching],
+[if test "$withval" = yes; then
+  ac_with_regex=1
+  AC_MSG_RESULT(regex)
+  AC_DEFINE(WITH_REGEX)
+  LIBOBJS="$LIBOBJS regex.o"
+fi])
+if test -z "$ac_with_regex"; then
+  AC_MSG_RESULT(rx)
+  AC_CHECK_FUNC(re_rx_search, , [LIBOBJS="$LIBOBJS rx.o"])
+fi
+AC_SUBST(LIBOBJS)dnl
+])
Index: /other-projects/trunk/greenorg/cgi-bin/gsdlsite.cfg
===================================================================
--- /other-projects/trunk/greenorg/cgi-bin/gsdlsite.cfg	(revision 14149)
+++ /other-projects/trunk/greenorg/cgi-bin/gsdlsite.cfg	(revision 14149)
@@ -0,0 +1,16 @@
+# this file should be placed in the same directory as your library
+# executable file. it should be edited to suit your site.
+
+# points to the GSDLHOME directory
+gsdlhome    **GSDLHOME**
+
+# this is the http address of GSDLHOME
+# if your webservers DocumentRoot is set to $GSDLHOME
+# then httpprefix can remain commented out
+httpprefix  /green
+
+# this is the http address of the directory which
+# contains the images for the interface.
+# if your webservers DocumentRoot is set to $GSDLHOME
+# then httpimg will be /images
+httpimg     /green/images
Index: /other-projects/trunk/greenorg/config.guess
===================================================================
--- /other-projects/trunk/greenorg/config.guess	(revision 14149)
+++ /other-projects/trunk/greenorg/config.guess	(revision 14149)
@@ -0,0 +1,1298 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+#   Free Software Foundation, Inc.
+
+timestamp='2001-07-12'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Written by Per Bothner <bothner@cygnus.com>.
+# Please send patches to <config-patches@gnu.org>.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int dummy(){}" > $dummy.c ;
+	for c in cc gcc c89 ; do
+	  ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
+	  if test $? = 0 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	rm -f $dummy.c $dummy.o $dummy.rel ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# Netbsd (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	# Determine the machine/vendor (is the vendor relevant).
+	case "${UNAME_MACHINE}" in
+	    amiga) machine=m68k-unknown ;;
+	    arm32) machine=arm-unknown ;;
+	    atari*) machine=m68k-atari ;;
+	    sun3*) machine=m68k-sun ;;
+	    mac68k) machine=m68k-apple ;;
+	    macppc) machine=powerpc-apple ;;
+	    hp3[0-9][05]) machine=m68k-hp ;;
+	    ibmrt|romp-ibm) machine=romp-ibm ;;
+	    *) machine=${UNAME_MACHINE}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE}" in
+	    i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	cat <<EOF >$dummy.s
+	.data
+\$Lformat:
+	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
+
+	.text
+	.globl main
+	.align 4
+	.ent main
+main:
+	.frame \$30,16,\$26,0
+	ldgp \$29,0(\$27)
+	.prologue 1
+	.long 0x47e03d80 # implver \$0
+	lda \$2,-1
+	.long 0x47e20c21 # amask \$2,\$1
+	lda \$16,\$Lformat
+	mov \$0,\$17
+	not \$1,\$18
+	jsr \$26,printf
+	ldgp \$29,0(\$26)
+	mov 0,\$16
+	jsr \$26,exit
+	.end main
+EOF
+	eval $set_cc_for_build
+	$CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+	if test "$?" = 0 ; then
+		case `./$dummy` in
+			0-0)
+				UNAME_MACHINE="alpha"
+				;;
+			1-0)
+				UNAME_MACHINE="alphaev5"
+				;;
+			1-1)
+				UNAME_MACHINE="alphaev56"
+				;;
+			1-101)
+				UNAME_MACHINE="alphapca56"
+				;;
+			2-303)
+				UNAME_MACHINE="alphaev6"
+				;;
+			2-307)
+				UNAME_MACHINE="alphaev67"
+				;;
+		esac
+	fi
+	rm -f $dummy.s $dummy
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit 0;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit 0 ;;
+    arc64:OpenBSD:*:*)
+	echo mips64el-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hkmips:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mips-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit 0 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    sun3*:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	eval $set_cc_for_build
+	$CC_FOR_BUILD $dummy.c -o $dummy \
+	  && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm -f $dummy.c $dummy && exit 0
+	rm -f $dummy.c $dummy
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		eval $set_cc_for_build
+		$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+		rm -f $dummy.c $dummy
+		echo rs6000-ibm-aix3.2.5
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit 0 ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+              case "${HPUX_REV}" in
+                11.[0-9][0-9])
+                  if [ -x /usr/bin/getconf ]; then
+                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                        esac ;;
+                    esac
+                  fi ;;
+              esac
+              if [ "${HP_ARCH}" = "" ]; then
+              sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+	eval $set_cc_for_build
+	(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+	if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+	rm -f $dummy.c $dummy
+	fi ;;
+	esac
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	eval $set_cc_for_build
+	$CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
+	rm -f $dummy.c $dummy
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    hppa*:OpenBSD:*:*)
+	echo hppa-unknown-openbsd
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*X-MP:*:*:*)
+	echo xmp-cray-unicos
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3D:*:*:*)
+	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY-2:*:*:*)
+	echo cray2-cray-unicos
+        exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i386-pc-interix
+	exit 0 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    mips:Linux:*:*)
+	case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in
+	  big)    echo mips-unknown-linux-gnu && exit 0 ;;
+	  little) echo mipsel-unknown-linux-gnu && exit 0 ;;
+	esac
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev67 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit 0 ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	ld_supported_targets=`cd /; ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;		
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	cat >$dummy.c <<EOF
+#include <features.h>
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __ELF__
+# ifdef __GLIBC__
+#  if __GLIBC__ >= 2
+    printf ("%s-pc-linux-gnu\n", argv[1]);
+#  else
+    printf ("%s-pc-linux-gnulibc1\n", argv[1]);
+#  endif
+# else
+   printf ("%s-pc-linux-gnulibc1\n", argv[1]);
+# endif
+#else
+  printf ("%s-pc-linux-gnuaout\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+	eval $set_cc_for_build
+	$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+	rm -f $dummy.c $dummy
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit 0 ;;
+    i*86:*:5:[78]*)
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit 0 ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit 0 ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit 0 ;;
+    PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                           # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit 0 ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit 0 ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Darwin:*:*)
+	echo `uname -p`-apple-darwin${UNAME_RELEASE}
+	exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	if test "${UNAME_MACHINE}" = "x86pc"; then
+		UNAME_MACHINE=pc
+	fi
+	echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+	exit 0 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit 0 ;;
+    NSR-[KW]:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit 0 ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit 0 ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit 0 ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit 0 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit 0 ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit 0 ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit 0 ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+eval $set_cc_for_build
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /other-projects/trunk/greenorg/config.h.in
===================================================================
--- /other-projects/trunk/greenorg/config.h.in	(revision 14149)
+++ /other-projects/trunk/greenorg/config.h.in	(revision 14149)
@@ -0,0 +1,211 @@
+/* config.h.in.  Generated automatically from configure.in by autoheader.  */
+
+#ifndef _GSDL_CONFIG_H
+#define _GSDL_CONFIG_H
+
+/* Define if on AIX 3.
+   System headers sometimes define this.
+   We just want to avoid a redefinition error message.  */
+#ifndef _ALL_SOURCE
+#undef _ALL_SOURCE
+#endif
+
+/* Define if using alloca.c.  */
+#undef C_ALLOCA
+
+/* Define to empty if the keyword does not work.  */
+#undef const
+
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+   This function is required for alloca.c support on those systems.  */
+#undef CRAY_STACKSEG_END
+
+/* Define if you have alloca, as a function or macro.  */
+#undef HAVE_ALLOCA
+
+/* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
+#undef HAVE_ALLOCA_H
+
+/* Define if you don't have vprintf but do have _doprnt.  */
+#undef HAVE_DOPRNT
+
+/* Define if you have the vprintf function.  */
+#undef HAVE_VPRINTF
+
+/* Define if on MINIX.  */
+#undef _MINIX
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+#undef off_t
+
+/* Define if the system does not provide POSIX.1 features except
+   with this defined.  */
+#undef _POSIX_1_SOURCE
+
+/* Define if you need to in order for stat and other things to work.  */
+#undef _POSIX_SOURCE
+
+/* Define as the return type of signal handlers (int or void).  */
+#undef RETSIGTYPE
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+#undef size_t
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown
+ */
+#undef STACK_DIRECTION
+
+/* Define if you have the ANSI C header files.  */
+#undef STDC_HEADERS
+
+/* Define if you can safely include both <sys/time.h> and <time.h>.  */
+#undef TIME_WITH_SYS_TIME
+
+/* Define if your <sys/time.h> declares struct tm.  */
+#undef TM_IN_SYS_TIME
+
+/* Define to the name of the distribution.  */
+#undef PACKAGE
+
+/* Define to the version of the distribution.  */
+#undef VERSION
+
+/* Define to 1 if you have the valloc function.  */
+#undef HAVE_VALLOC
+
+/* Define to 1 if ANSI function prototypes are usable.  */
+#undef PROTOTYPES
+
+/* Define if you don't want to use long long's with GCC */
+#undef DISABLE_LONG_LONG
+ 
+/* Define to 1 for better use of the debugging malloc library.  See
+   site ftp.antaire.com in antaire/src, file dmalloc/dmalloc.tar.gz.  */
+#undef WITH_DMALLOC
+
+ 
+/* Define to 1 if GNU regex should be used instead of GNU rx.  */
+#undef WITH_REGEX
+
+/* Some braindead header files do not have the requ'd function declarations */
+#undef HAVE_FGETC_DECL
+#undef HAVE_FREAD_DECL
+
+/* See if have this field in the prstatus_t structure */
+/* It stores the size of the process heap */
+#undef HAVE_PR_BRKSIZE
+
+/* Define FASTCGI if needsbe */
+#undef USE_FASTCGI
+
+/* Define USE_CORBA if needsbe */
+#undef USE_CORBA
+
+/* Define MICO_DIR if needsbe */
+#undef MICO_DIR
+
+/* Define MICO_VERSION if required */
+#undef MICO_VERSION
+
+/* Define if you have the ftime function.  */
+#undef HAVE_FTIME
+
+/* Define if you have the ftruncate function.  */
+#undef HAVE_FTRUNCATE
+
+/* Define if you have the getpagesize function.  */
+#undef HAVE_GETPAGESIZE
+
+/* Define if you have the getrusage function.  */
+#undef HAVE_GETRUSAGE
+
+/* Define if you have the mallinfo function.  */
+#undef HAVE_MALLINFO
+
+/* Define if you have the select function.  */
+#undef HAVE_SELECT
+
+/* Define if you have the setbuffer function.  */
+#undef HAVE_SETBUFFER
+
+/* Define if you have the strcasecmp function.  */
+#undef HAVE_STRCASECMP
+
+/* Define if you have the strerror function.  */
+#undef HAVE_STRERROR
+
+/* Define if you have the strftime function.  */
+#undef HAVE_STRFTIME
+
+/* Define if you have the strstr function.  */
+#undef HAVE_STRSTR
+
+/* Define if you have the strtol function.  */
+#undef HAVE_STRTOL
+
+/* Define if you have the times function.  */
+#undef HAVE_TIMES
+
+/* Define if you have the valloc function.  */
+#undef HAVE_VALLOC
+
+/* Define if you have the <crypt.h> header file.  */
+#undef HAVE_CRYPT_H
+
+/* Define if you have the <dirent.h> header file.  */
+#undef HAVE_DIRENT_H
+
+/* Define if you have the <fcntl.h> header file.  */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <limits.h> header file.  */
+#undef HAVE_LIMITS_H
+
+/* Define if you have the <memory.h> header file.  */
+#undef HAVE_MEMORY_H
+
+/* Define if you have the <ndir.h> header file.  */
+#undef HAVE_NDIR_H
+
+/* Define if you have the <string.h> header file.  */
+#undef HAVE_STRING_H
+
+/* Define if you have the <sys/dir.h> header file.  */
+#undef HAVE_SYS_DIR_H
+
+/* Define if you have the <sys/ndir.h> header file.  */
+#undef HAVE_SYS_NDIR_H
+
+/* Define if you have the <sys/procfs.h> header file.  */
+#undef HAVE_SYS_PROCFS_H
+
+/* Define if you have the <sys/time.h> header file.  */
+#undef HAVE_SYS_TIME_H
+
+/* Define if you have the <unistd.h> header file.  */
+#undef HAVE_UNISTD_H
+
+/* Define if you have the crypt library (-lcrypt).  */
+#undef HAVE_LIBCRYPT
+
+/* Define if you have the g library (-lg).  */
+#undef HAVE_LIBG
+
+/* Define if you have the gdbm library (-lgdbm).  */
+#undef HAVE_LIBGDBM
+
+/* Define if you have the m library (-lm).  */
+#undef HAVE_LIBM
+
+/* Define if you have the stdc++ library (-lstdc++).  */
+#undef HAVE_LIBSTDC__
+
+/* Define if you have gettext (eg glibc) */
+#undef ENABLE_NLS
+
+#endif /* _GSDL_CONFIG_H */
Index: /other-projects/trunk/greenorg/config.sub
===================================================================
--- /other-projects/trunk/greenorg/config.sub	(revision 14149)
+++ /other-projects/trunk/greenorg/config.sub	(revision 14149)
@@ -0,0 +1,1375 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+#   Free Software Foundation, Inc.
+
+timestamp='2001-06-08'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
+	        | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
+		| pyramid | mn10200 | mn10300 | tron | a29k \
+		| 580 | i960 | h8300 \
+		| x86 | ppcbe | mipsbe | mipsle | shbe | shle \
+		| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+		| hppa64 \
+		| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+		| alphaev6[78] \
+		| we32k | ns16k | clipper | i370 | sh | sh[34] \
+		| powerpc | powerpcle \
+		| 1750a | dsp16xx | pdp10 | pdp11 \
+		| mips16 | mips64 | mipsel | mips64el \
+		| mips64orion | mips64orionel | mipstx39 | mipstx39el \
+		| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+		| mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \
+		| sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
+		| v850 | c4x \
+		| thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
+		| pj | pjl | h8500 | z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	# FIXME: clean up the formatting here.
+	vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
+	      | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
+	      | arm-*  | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
+	      | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
+	      | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
+	      | xmp-* | ymp-* \
+	      | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
+	      | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
+	      | hppa2.0n-* | hppa64-* \
+	      | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+	      | alphaev6[78]-* \
+	      | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+	      | clipper-* | orion-* \
+	      | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \
+	      | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
+	      | mips16-* | mips64-* | mipsel-* \
+	      | mips64el-* | mips64orion-* | mips64orionel-* \
+	      | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+	      | mipstx39-* | mipstx39el-* | mcore-* \
+	      | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
+	      | [cjt]90-* \
+	      | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+	      | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
+	      | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	cray2)
+		basic_machine=cray2-cray
+		os=-unicos
+		;;
+	[cjt]90)
+		basic_machine=${basic_machine}-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mipsel*-linux*)
+		basic_machine=mipsel-unknown
+		os=-linux-gnu
+		;;
+	mips*-linux*)
+		basic_machine=mips-unknown
+		os=-linux-gnu
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+        pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2)
+		basic_machine=i686-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+	        ;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+	        ;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sparclite-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=t3e-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	windows32)
+		basic_machine=i386-pc
+		os=-windows32-msvcrt
+		;;
+	xmp)
+		basic_machine=xmp-cray
+		os=-unicos
+		;;
+        xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	mips)
+		if [ x$os = x-linux-gnu ]; then
+			basic_machine=mips-unknown
+		else
+			basic_machine=mips-mips
+		fi
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh3 | sh4)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+        cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	c4x*)
+		basic_machine=c4x-none
+		os=-coff
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto*)
+		os=-nto-qnx
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-ns2 )
+	        os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+	        os=-mint
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	pdp10-*)
+		os=-tops20
+		;;
+        pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+        *-gould)
+		os=-sysv
+		;;
+        *-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+        *-sgi)
+		os=-irix
+		;;
+        *-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
Index: /other-projects/trunk/greenorg/configtest.pl
===================================================================
--- /other-projects/trunk/greenorg/configtest.pl	(revision 14149)
+++ /other-projects/trunk/greenorg/configtest.pl	(revision 14149)
@@ -0,0 +1,1 @@
+print $]
Index: /other-projects/trunk/greenorg/configure
===================================================================
--- /other-projects/trunk/greenorg/configure	(revision 14149)
+++ /other-projects/trunk/greenorg/configure	(revision 14149)
@@ -0,0 +1,6209 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Autoconf 2.50.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+cross_compiling=no
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Avoid depending upon Character Ranges.
+ac_cr_az='abcdefghijklmnopqrstuvwxyz'
+ac_cr_AZ='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+ac_cr_09='0123456789'
+ac_cr_alnum=$ac_cr_az$ac_cr_AZ$ac_cr_09
+
+# Sed expression to map a string onto a valid sh and CPP variable names.
+ac_tr_sh="sed y%*+%pp%;s%[^_$ac_cr_alnum]%_%g"
+ac_tr_cpp="sed y%*$ac_cr_az%P$ac_cr_AZ%;s%[^_$ac_cr_alnum]%_%g"
+
+ac_unique_file="lib/text_t.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#else
+# if HAVE_STRINGS_H
+#  include <strings.h>
+# endif
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subdirs_all="$ac_subdirs_all packages"
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$ac_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$ac_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir \
+              exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    NONE ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<EOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+EOF
+
+  cat <<EOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+EOF
+
+  cat <<\EOF
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       build programs to run on HOST [BUILD]
+  --target=TARGET   configure for building compilers for TARGET [HOST]
+EOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\EOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-corba          Enable CORBA support
+  --enable-z3950          Enable Z39.50 client support
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-micodir          Use installed MICO directory
+  --with-gdbm=dir         Use local gdbm library and headers
+  --with-dmalloc          use dmalloc, as in
+                          ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz
+  --with-regex            use older regex in lieu of GNU rx for matching
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+EOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
+    cd $ac_subdir
+    # A "../" for each directory in /$ac_subdir.
+    ac_dots=`echo $ac_subdir |
+             sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+    case $srcdir in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=$srcdir ;;
+    [\\/]* | ?:[\\/]* ) # Absolute path.
+      ac_sub_srcdir=$srcdir/$ac_subdir ;;
+    *) # Relative path.
+      ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+    esac
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_sub_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_sub_srcdir/configure; then
+      echo
+      $SHELL $ac_sub_srcdir/configure  --help=recursive
+    elif test -f $ac_sub_srcdir/configure.ac ||
+           test -f $ac_sub_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\EOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<EOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.50.  Invocation command line was
+
+  $ $0 $@
+
+EOF
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform.  ##
+## ---------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+PATH = $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests.  ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+for ac_arg
+do
+  case $ac_arg in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+    ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+    ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+    ac_sep=" " ;;
+  *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
+     ac_sep=" " ;;
+  esac
+  # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  echo >&5
+  echo "## ----------------- ##" >&5
+  echo "## Cache variables.  ##" >&5
+  echo "## ----------------- ##" >&5
+  echo >&5
+  # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+    	  s/^\\([_$ac_cr_alnum]*_cv_[_$ac_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$ac_cr_alnum]*_cv_[_$ac_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} >&5
+  sed "/^$/d" confdefs.h >conftest.log
+  if test -s conftest.log; then
+    echo >&5
+    echo "## ------------ ##" >&5
+    echo "## confdefs.h.  ##" >&5
+    echo "## ------------ ##" >&5
+    echo >&5
+    cat conftest.log >&5
+  fi
+  (echo; echo) >&5
+  test "$ac_signal" != 0 &&
+    echo "$as_me: caught signal $ac_signal" >&5
+  echo "$as_me: exit $exit_status" >&5
+  rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_status=$?; ac_signal='$ac_signal'; { (exit $ac_status); exit $ac_status; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:868: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    cat "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:879: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:887: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_suggest_removing_cache=false
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:903: WARNING: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: WARNING: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_suggest_removing_cache=: ;;
+    ,set)
+      { echo "$as_me:907: WARNING: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: WARNING: \`$ac_var' was not set in the previous run" >&2;}
+      ac_suggest_removing_cache=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+        { echo "$as_me:913: WARNING: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: WARNING: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:915: WARNING:   former value:  $ac_old_val" >&5
+echo "$as_me: WARNING:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:917: WARNING:   current value: $ac_new_val" >&5
+echo "$as_me: WARNING:   current value: $ac_new_val" >&2;}
+        ac_suggest_removing_cache=:
+      fi;;
+  esac
+done
+if $ac_suggest_removing_cache; then
+  { echo "$as_me:924: WARNING: changes in the environment can compromise the build" >&5
+echo "$as_me: WARNING: changes in the environment can compromise the build" >&2;}
+  { echo "$as_me:926: WARNING: consider removing $cache_file and starting over" >&5
+echo "$as_me: WARNING: consider removing $cache_file and starting over" >&2;}
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)      ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+echo "#! $SHELL" >conftest.sh
+echo  "exit 0"   >>conftest.sh
+chmod +x conftest.sh
+if { (echo "$as_me:945: PATH=\".;.\"; conftest.sh") >&5
+  (PATH=".;."; conftest.sh) 2>&5
+  ac_status=$?
+  echo "$as_me:948: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  ac_path_separator=';'
+else
+  ac_path_separator=:
+fi
+PATH_SEPARATOR="$ac_path_separator"
+rm -f conftest.sh
+
+ac_config_headers="$ac_config_headers config.h"
+
+PACKAGE=gsdl
+VERSION=2.1
+cat >>confdefs.h <<EOF
+#define PACKAGE "$PACKAGE"
+EOF
+
+cat >>confdefs.h <<EOF
+#define VERSION "$VERSION"
+EOF
+
+USE_FASTCGI=0
+if test USE_FASTCGI = 1; then
+cat >>confdefs.h <<\EOF
+#define USE_FASTCGI 1
+EOF
+
+fi
+
+if test USE_LANGACTION = 1; then
+cat >>confdefs.h <<\EOF
+#define USE_LANGACTION 1
+EOF
+
+fi
+
+# Check whether --enable-corba or --disable-corba was given.
+if test "${enable_corba+set}" = set; then
+  enableval="$enable_corba"
+  USE_CORBA=1
+else
+  USE_CORBA=0
+fi;
+cat >>confdefs.h <<EOF
+#define USE_CORBA $USE_CORBA
+EOF
+
+# Check whether --with-micodir or --without-micodir was given.
+if test "${with_micodir+set}" = set; then
+  withval="$with_micodir"
+  MICO_DIR=$enableval
+else
+  MICO_DIR="default"
+fi;
+cat >>confdefs.h <<EOF
+#define MICO_DIR "$MICO_DIR"
+EOF
+
+# Check whether --enable-z3950 or --disable-z3950 was given.
+if test "${enable_z3950+set}" = set; then
+  enableval="$enable_z3950"
+  USE_Z3950=1
+else
+  USE_Z3950=0
+fi;
+if test USE_Z3950 = 1; then
+cat >>confdefs.h <<\EOF
+#define USE_Z3950 $USE_Z3950
+EOF
+
+fi
+
+# Check whether --with-gdbm or --without-gdbm was given.
+if test "${with_gdbm+set}" = set; then
+  withval="$with_gdbm"
+  gdbmdir=$withval
+fi;
+
+LDFLAGS=
+if test -z "$CFLAGS"; then
+CFLAGS=-O2
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:1039: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}gcc"
+echo "$as_me:1054: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1062: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1065: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:1074: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="gcc"
+echo "$as_me:1089: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1097: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1100: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:1113: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}cc"
+echo "$as_me:1128: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1136: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1139: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1148: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="cc"
+echo "$as_me:1163: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1171: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1174: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1187: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+  ac_prog_rejected=yes
+  continue
+fi
+ac_cv_prog_CC="cc"
+echo "$as_me:1207: found $ac_dir/$ac_word" >&5
+break
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" ${1+"$@"}
+    shift
+    ac_cv_prog_CC="$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1229: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1232: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:1243: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+echo "$as_me:1258: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1266: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1269: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1282: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="$ac_prog"
+echo "$as_me:1297: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1305: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1308: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1320: error: no acceptable cc found in \$PATH" >&5
+echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1325 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compiler, and finding out an intuition
+# of exeext.
+echo "$as_me:1341: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:1344: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:1347: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `ls a.exe conftest.exe a.* conftest conftest.* 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    a.out ) # We found the default executable, but exeext='' is most
+            # certainly right.
+            break;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1364: error: C compiler cannot create executables" >&5
+echo "$as_me: error: C compiler cannot create executables" >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:1370: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1375: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:1381: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1384: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:1391: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:1399: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1406: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1408: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1411: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1413: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:1416: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:1432: error: cannot compute EXEEXT: cannot compile and link" >&5
+echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1438: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:1444: checking for object suffix" >&5
+echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1450 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1462: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1465: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1477: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1484: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:1488: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1494 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1509: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1512: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1515: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1518: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1530: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:1536: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1542 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1554: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1557: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1560: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1563: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1573: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1600: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1603: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1606: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1609: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1621 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1634: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1637: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1640: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1643: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1653 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1665: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1668: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1671: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1674: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+echo '#ifdef __cplusplus' >>confdefs.h
+echo $ac_declaration      >>confdefs.h
+echo '#endif'             >>confdefs.h
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:1708: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+echo "$as_me:1723: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:1731: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:1734: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1747: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CXX="$ac_prog"
+echo "$as_me:1762: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:1770: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:1773: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+echo "$as_me:1784: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1790 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1805: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1808: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1811: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1814: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1826: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:1832: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1838 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1850: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1853: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1856: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1859: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1869: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1896 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1909: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1912: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1915: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1918: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1928 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1940: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:1943: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1946: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:1949: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+echo '#ifdef __cplusplus' >>confdefs.h
+echo $ac_declaration      >>confdefs.h
+echo '#endif'             >>confdefs.h
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+for ac_prog in mawk gawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1972: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_AWK="$ac_prog"
+echo "$as_me:1987: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:1995: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:1998: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+for ac_prog in 'bison -y' byacc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2009: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_YACC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_YACC="$ac_prog"
+echo "$as_me:2024: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  echo "$as_me:2032: result: $YACC" >&5
+echo "${ECHO_T}$YACC" >&6
+else
+  echo "$as_me:2035: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:2060: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:2070: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:2074: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:2083: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:2087: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:2092: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:2099: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:2108: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:2113: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:2120: checking target system type" >&5
+echo $ECHO_N "checking target system type... $ECHO_C" >&6
+if test "${ac_cv_target+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_target_alias=$target_alias
+test "x$ac_cv_target_alias" = "x" &&
+  ac_cv_target_alias=$ac_cv_host_alias
+ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
+  { { echo "$as_me:2129: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:2134: result: $ac_cv_target" >&5
+echo "${ECHO_T}$ac_cv_target" >&6
+target=$ac_cv_target
+target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:2159: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    ac_save_IFS=$IFS; IFS=$ac_path_separator
+  for ac_dir in $PATH; do
+    IFS=$ac_save_IFS
+    # Account for people who put trailing slashes in PATH elements.
+    case $ac_dir/ in
+    / | ./ | .// | /cC/* \
+    | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+    | /usr/ucb/* ) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
+        if $as_executable_p "$ac_dir/$ac_prog"; then
+	  if test $ac_prog = install &&
+            grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$ac_dir/$ac_prog -c"
+	    break 2
+	  fi
+	fi
+      done
+      ;;
+    esac
+  done
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:2208: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:2219: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:2223: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:2226: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:2230: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\EOF
+all:
+	@echo 'ac_maketemp="${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:2250: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:2254: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:2262: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+echo "$as_me:2277: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:2285: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:2288: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:2297: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+  ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_RANLIB="ranlib"
+echo "$as_me:2312: found $ac_dir/$ac_word" >&5
+break
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:2321: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:2324: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+#moved CORBA MICO directory test to get version of MICO
+if test $USE_CORBA = 1; then
+
+if test $MICO_DIR = "default"; then
+#do something
+MICO_INC="-I packages/mico/mico/include"
+else
+#build the micotest program
+MICO_INC= ""
+if test $MICO_DIR != yes; then
+MICO_INC="-I $MICO_DIR"
+fi
+fi
+
+#get MICO_VER value
+sh -c "$CC -c micotest.cpp -o micotest.o $MICO_INC 2>&1" > /dev/null
+sh -c "$CC -o micotest micotest.o -lstdc++ 2>&1" > /dev/null
+MICO_VER=`./micotest` || MICO_VER=2.3.5
+sh -c "rm micotest"
+sh -c "rm micotest.o"
+
+#do test of MICO_VER
+if test MICO_VER != 0; then
+cat >>confdefs.h <<\EOF
+#define MICO_VER 1
+EOF
+
+fi
+#end USE_CORBA test
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:2369: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      # break 2 since there is a loop in there.
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2391 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:2396: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2402: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2425 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:2429: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2435: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break 2
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:2472: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2482 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:2487: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2493: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2516 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:2520: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2526: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:2554: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+echo "$as_me:2565: checking for AIX" >&5
+echo $ECHO_N "checking for AIX... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line 2568 "configure"
+#include "confdefs.h"
+#ifdef _AIX
+  yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  echo "$as_me:2577: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+cat >>confdefs.h <<\EOF
+#define _ALL_SOURCE 1
+EOF
+
+else
+  echo "$as_me:2584: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest*
+
+echo "$as_me:2589: checking for POSIXized ISC" >&5
+echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6
+if test -d /etc/conf/kconfig.d &&
+   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+then
+  echo "$as_me:2594: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  ISC=yes # If later tests want to check for ISC.
+
+cat >>confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+  if test "$GCC" = yes; then
+    CC="$CC -posix"
+  else
+    CC="$CC -Xp"
+  fi
+else
+  echo "$as_me:2608: result: no" >&5
+echo "${ECHO_T}no" >&6
+  ISC=
+fi
+
+echo "$as_me:2613: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2619 "configure"
+#include "confdefs.h"
+#include <minix/config.h>
+_ACEOF
+if { (eval echo "$as_me:2623: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2629: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_minix_config_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_minix_config_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:2648: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6
+if test $ac_cv_header_minix_config_h = yes; then
+  MINIX=yes
+else
+  MINIX=
+fi
+
+if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+cat >>confdefs.h <<\EOF
+#define _POSIX_1_SOURCE 2
+EOF
+
+cat >>confdefs.h <<\EOF
+#define _MINIX 1
+EOF
+
+fi
+
+echo "$as_me:2672: checking for ${CC-cc} option to accept ANSI C" >&5
+echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CFLAGS="$CFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX			-Aa -D_HPUX_SOURCE
+# SVR4			-Xc
+for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" -Xc
+do
+  CFLAGS="$ac_save_CFLAGS $ac_arg"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2689 "configure"
+#include "confdefs.h"
+#if !defined(__STDC__) || __STDC__ != 1
+choke me
+#endif
+
+int
+main ()
+{
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2706: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2709: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2712: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2715: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc="$ac_arg"; break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+CFLAGS="$ac_save_CFLAGS"
+
+fi
+
+echo "$as_me:2728: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno) ;;
+  *) CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:2735: checking for function prototypes" >&5
+echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
+if test "$ac_cv_prog_cc_stdc" != no; then
+  echo "$as_me:2738: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\EOF
+#define PROTOTYPES 1
+EOF
+
+  U= ANSI2KNR=
+else
+  echo "$as_me:2746: result: no" >&5
+echo "${ECHO_T}no" >&6
+  U=_ ANSI2KNR=ansi2knr
+fi
+
+echo "$as_me:2751: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 2759 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2808: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2811: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2814: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2817: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:2834: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:2837: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:2842: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2848 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  ccp = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p = (char**) ccp;
+  ccp = (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2906: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:2909: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2912: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:2915: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:2925: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+echo "$as_me:2935: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2941 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:2949: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:2955: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2977 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 2995 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3016 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3042: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3045: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3047: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3050: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:3063: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+for ac_header in stdlib.h string.h memory.h strings.h inttypes.h unistd.h
+do
+ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh`
+echo "$as_me:3076: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3082 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:3086: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3092: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$ac_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$ac_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:3111: result: `eval echo '${'$ac_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_Header'}'`" >&6
+if test `eval echo '${'$ac_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $ac_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:3121: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6
+if test "${ac_cv_type_off_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3127 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((off_t *) 0)
+  return 0;
+if (sizeof (off_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3142: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3145: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3148: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3151: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_off_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_off_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3161: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6
+if test $ac_cv_type_off_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define off_t long
+EOF
+
+fi
+
+echo "$as_me:3173: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3179 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+  return 0;
+if (sizeof (size_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3194: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3197: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3200: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3203: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_size_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3213: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<EOF
+#define size_t unsigned
+EOF
+
+fi
+
+echo "$as_me:3225: checking whether time.h and sys/time.h may both be included" >&5
+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
+if test "${ac_cv_header_time+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3231 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm *tp;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3246: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3249: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3252: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3255: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_time=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_time=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3265: result: $ac_cv_header_time" >&5
+echo "${ECHO_T}$ac_cv_header_time" >&6
+if test $ac_cv_header_time = yes; then
+
+cat >>confdefs.h <<\EOF
+#define TIME_WITH_SYS_TIME 1
+EOF
+
+fi
+
+echo "$as_me:3275: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
+if test "${ac_cv_struct_tm+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3281 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm *tp; tp->tm_sec;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3295: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3298: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3301: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3304: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm=time.h
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_struct_tm=sys/time.h
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3314: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\EOF
+#define TM_IN_SYS_TIME 1
+EOF
+
+fi
+
+if test "$ac_cv_prog_cc_stdc" = '-Xc'; then
+cat >conftest.$ac_ext <<_ACEOF
+#line 3326 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+
+int
+main ()
+{
+ FILE *rubbish = popen("yes", "r");
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3339: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3342: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3345: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3348: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+CC="`echo $CC | sed 's/-Xc/-Xa/'`"    ac_cv_prog_cc_stdc='-Xa'
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+
+echo "$as_me:3359: checking for main in -lg" >&5
+echo $ECHO_N "checking for main in -lg... $ECHO_C" >&6
+if test "${ac_cv_lib_g_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lg  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3367 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3379: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3382: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3385: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3388: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_g_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_g_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3399: result: $ac_cv_lib_g_main" >&5
+echo "${ECHO_T}$ac_cv_lib_g_main" >&6
+if test $ac_cv_lib_g_main = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBG 1
+EOF
+
+  LIBS="-lg $LIBS"
+
+fi
+
+echo "$as_me:3410: checking for main in -lgdbm" >&5
+echo $ECHO_N "checking for main in -lgdbm... $ECHO_C" >&6
+if test "${ac_cv_lib_gdbm_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgdbm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3418 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3430: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3433: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3436: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3439: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_gdbm_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_gdbm_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3450: result: $ac_cv_lib_gdbm_main" >&5
+echo "${ECHO_T}$ac_cv_lib_gdbm_main" >&6
+if test $ac_cv_lib_gdbm_main = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBGDBM 1
+EOF
+
+  LIBS="-lgdbm $LIBS"
+
+fi
+
+echo "$as_me:3461: checking for main in -lm" >&5
+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3469 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3481: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3484: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3487: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3490: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_m_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3501: result: $ac_cv_lib_m_main" >&5
+echo "${ECHO_T}$ac_cv_lib_m_main" >&6
+if test $ac_cv_lib_m_main = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBM 1
+EOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+echo "$as_me:3512: checking for main in -lstdc++" >&5
+echo $ECHO_N "checking for main in -lstdc++... $ECHO_C" >&6
+if test "${ac_cv_lib_stdcpp_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lstdc++  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3520 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3532: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3535: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3538: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3541: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_stdcpp_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_stdcpp_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3552: result: $ac_cv_lib_stdcpp_main" >&5
+echo "${ECHO_T}$ac_cv_lib_stdcpp_main" >&6
+if test $ac_cv_lib_stdcpp_main = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBSTDC__ 1
+EOF
+
+  LIBS="-lstdc++ $LIBS"
+
+fi
+
+echo "$as_me:3563: checking for main in -lcrypt" >&5
+echo $ECHO_N "checking for main in -lcrypt... $ECHO_C" >&6
+if test "${ac_cv_lib_crypt_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcrypt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3571 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3583: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3586: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3589: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3592: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_crypt_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_crypt_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3603: result: $ac_cv_lib_crypt_main" >&5
+echo "${ECHO_T}$ac_cv_lib_crypt_main" >&6
+if test $ac_cv_lib_crypt_main = yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBCRYPT 1
+EOF
+
+  LIBS="-lcrypt $LIBS"
+
+fi
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+  ac_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $ac_tr_sh`
+echo "$as_me:3617: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3623 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+DIR *dirp = 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3637: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:3640: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3643: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3646: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:3656: result: `eval echo '${'$ac_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_Header'}'`" >&6
+if test `eval echo '${'$ac_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_hdr" | $ac_tr_cpp` 1
+EOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+  echo "$as_me:3669: checking for opendir in -ldir" >&5
+echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
+if test "${ac_cv_lib_dir_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldir  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3677 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char opendir ();
+int
+main ()
+{
+opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3696: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3699: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3702: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3705: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dir_opendir=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dir_opendir=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3716: result: $ac_cv_lib_dir_opendir" >&5
+echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
+if test $ac_cv_lib_dir_opendir = yes; then
+  LIBS="$LIBS -ldir"
+fi
+
+else
+  echo "$as_me:3723: checking for opendir in -lx" >&5
+echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
+if test "${ac_cv_lib_x_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lx  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 3731 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char opendir ();
+int
+main ()
+{
+opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:3750: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3753: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:3756: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3759: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_x_opendir=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_x_opendir=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:3770: result: $ac_cv_lib_x_opendir" >&5
+echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
+if test $ac_cv_lib_x_opendir = yes; then
+  LIBS="$LIBS -lx"
+fi
+
+fi
+
+echo "$as_me:3778: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3784 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:3792: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3798: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3820 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3838 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3859 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:3885: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:3888: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:3890: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:3893: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:3906: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+for ac_header in fcntl.h limits.h sys/time.h unistd.h crypt.h string.h memory.h sys/procfs.h
+do
+ac_ac_Header=`echo "ac_cv_header_$ac_header" | $ac_tr_sh`
+echo "$as_me:3919: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3925 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:3929: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3935: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$ac_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$ac_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:3954: result: `eval echo '${'$ac_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_Header'}'`" >&6
+if test `eval echo '${'$ac_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $ac_tr_cpp` 1
+EOF
+
+fi
+done
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3965 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "fread" >/dev/null 2>&1; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_FREAD_DECL 1
+EOF
+
+fi
+rm -f conftest*
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3980 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "fgetc" >/dev/null 2>&1; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_FGETC_DECL 1
+EOF
+
+fi
+rm -f conftest*
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3995 "configure"
+#include "confdefs.h"
+#include <sys/procfs.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "pr_brksize" >/dev/null 2>&1; then
+  cat >>confdefs.h <<\EOF
+#define HAVE_PR_BRKSIZE 1
+EOF
+
+fi
+rm -f conftest*
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+echo "$as_me:4011: checking for working alloca.h" >&5
+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
+if test "${ac_cv_working_alloca_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4017 "configure"
+#include "confdefs.h"
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4029: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4032: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4035: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4038: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_working_alloca_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_working_alloca_h=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4048: result: $ac_cv_working_alloca_h" >&5
+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_ALLOCA_H 1
+EOF
+
+fi
+
+echo "$as_me:4058: checking for alloca" >&5
+echo $ECHO_N "checking for alloca... $ECHO_C" >&6
+if test "${ac_cv_func_alloca_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4064 "configure"
+#include "confdefs.h"
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  if HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4096: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4099: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4102: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4105: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_alloca_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_alloca_works=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4115: result: $ac_cv_func_alloca_works" >&5
+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_ALLOCA 1
+EOF
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=alloca.$ac_objext
+
+cat >>confdefs.h <<\EOF
+#define C_ALLOCA 1
+EOF
+
+echo "$as_me:4136: checking whether \`alloca.c' needs Cray hooks" >&5
+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
+if test "${ac_cv_os_cray+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4142 "configure"
+#include "confdefs.h"
+#if defined(CRAY) && ! defined(CRAY2)
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "webecray" >/dev/null 2>&1; then
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:4160: result: $ac_cv_os_cray" >&5
+echo "${ECHO_T}$ac_cv_os_cray" >&6
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
+echo "$as_me:4165: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4171 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4202: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4205: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4208: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4211: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4221: result: `eval echo '${'$ac_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_var'}'`" >&6
+if test `eval echo '${'$ac_ac_var'}'` = yes; then
+
+cat >>confdefs.h <<EOF
+#define CRAY_STACKSEG_END $ac_func
+EOF
+
+    break
+fi
+
+  done
+fi
+
+echo "$as_me:4235: checking stack direction for C alloca" >&5
+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
+if test "${ac_cv_c_stack_direction+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4244 "configure"
+#include "confdefs.h"
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  exit (find_stack_direction () < 0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:4267: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4270: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:4272: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4275: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_stack_direction=1
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_stack_direction=-1
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_ext
+fi
+fi
+echo "$as_me:4287: result: $ac_cv_c_stack_direction" >&5
+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
+
+cat >>confdefs.h <<EOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+EOF
+
+fi
+
+if test $ac_cv_c_compiler_gnu = yes; then
+    echo "$as_me:4297: checking whether $CC needs -traditional" >&5
+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    ac_pattern="Autoconf.*'x'"
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4304 "configure"
+#include "confdefs.h"
+#include <sgtty.h>
+Autoconf TIOCGETP
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "$ac_pattern" >/dev/null 2>&1; then
+  ac_cv_prog_gcc_traditional=yes
+else
+  ac_cv_prog_gcc_traditional=no
+fi
+rm -f conftest*
+
+  if test $ac_cv_prog_gcc_traditional = no; then
+    cat >conftest.$ac_ext <<_ACEOF
+#line 4319 "configure"
+#include "confdefs.h"
+#include <termio.h>
+Autoconf TCGETA
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "$ac_pattern" >/dev/null 2>&1; then
+  ac_cv_prog_gcc_traditional=yes
+fi
+rm -f conftest*
+
+  fi
+fi
+echo "$as_me:4332: result: $ac_cv_prog_gcc_traditional" >&5
+echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
+  if test $ac_cv_prog_gcc_traditional = yes; then
+    CC="$CC -traditional"
+  fi
+fi
+
+echo "$as_me:4339: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4345 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#ifdef signal
+# undef signal
+#endif
+#ifdef __cplusplus
+extern "C" void (*signal (int, void (*)(int)))(int);
+#else
+void (*signal ()) ();
+#endif
+
+int
+main ()
+{
+int i;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4367: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4370: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4373: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4376: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_signal=void
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signal=int
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:4386: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
+
+cat >>confdefs.h <<EOF
+#define RETSIGTYPE $ac_cv_type_signal
+EOF
+
+for ac_func in vprintf
+do
+ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
+echo "$as_me:4396: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4402 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4433: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4436: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4439: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4442: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4452: result: `eval echo '${'$ac_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_var'}'`" >&6
+if test `eval echo '${'$ac_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $ac_tr_cpp` 1
+EOF
+
+echo "$as_me:4459: checking for _doprnt" >&5
+echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
+if test "${ac_cv_func__doprnt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4465 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _doprnt (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char _doprnt ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+f = _doprnt;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4496: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4499: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4502: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4505: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func__doprnt=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func__doprnt=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4515: result: $ac_cv_func__doprnt" >&5
+echo "${ECHO_T}$ac_cv_func__doprnt" >&6
+if test $ac_cv_func__doprnt = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_DOPRNT 1
+EOF
+
+fi
+
+fi
+done
+
+for ac_func in ftime select strftime strtol getrusage times mallinfo setbuffer getpagesize strerror
+do
+ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
+echo "$as_me:4531: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4537 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4568: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4571: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4574: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4577: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4587: result: `eval echo '${'$ac_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_var'}'`" >&6
+if test `eval echo '${'$ac_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $ac_tr_cpp` 1
+EOF
+
+fi
+done
+
+for ac_func in ftruncate strstr strcasecmp
+do
+ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
+echo "$as_me:4600: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4606 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4637: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4640: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4643: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4646: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4656: result: `eval echo '${'$ac_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_var'}'`" >&6
+if test `eval echo '${'$ac_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $ac_tr_cpp` 1
+EOF
+
+else
+  LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+echo "$as_me:4668: checking for textdomain " >&5
+echo $ECHO_N "checking for textdomain ... $ECHO_C" >&6
+if test "${ac_cv_func_textdomain_+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4674 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char textdomain  (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char textdomain  ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_textdomain ) || defined (__stub___textdomain )
+choke me
+#else
+f = textdomain ;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4705: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4708: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4711: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4714: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_textdomain_=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_textdomain_=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4724: result: $ac_cv_func_textdomain_" >&5
+echo "${ECHO_T}$ac_cv_func_textdomain_" >&6
+if test $ac_cv_func_textdomain_ = yes; then
+  cat >>confdefs.h <<\EOF
+#define ENABLE_NLS  1
+EOF
+
+fi
+
+# *** Custom checking (based on GNU tar configure.in) ***
+# ---------------------------------------------------------------------------
+echo "$as_me:4735: checking for HP-UX needing gmalloc" >&5
+echo $ECHO_N "checking for HP-UX needing gmalloc... $ECHO_C" >&6
+if test "`(uname -s) 2> /dev/null`" = 'HP-UX'; then
+  echo "$as_me:4738: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  LIBOBJS="$LIBOBJS gmalloc.o"
+  cat >>confdefs.h <<\EOF
+#define HAVE_VALLOC 1
+EOF
+
+else
+  echo "$as_me:4746: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+for ac_func in valloc
+do
+ac_ac_var=`echo "ac_cv_func_$ac_func" | $ac_tr_sh`
+echo "$as_me:4752: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$ac_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4758 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4789: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4792: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4795: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4798: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$ac_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$ac_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4808: result: `eval echo '${'$ac_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$ac_ac_var'}'`" >&6
+if test `eval echo '${'$ac_ac_var'}'` = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $ac_tr_cpp` 1
+EOF
+
+fi
+done
+
+fi
+
+echo "$as_me:4820: checking if malloc debugging is wanted" >&5
+echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6
+
+# Check whether --with-dmalloc or --without-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then
+  withval="$with_dmalloc"
+  if test "$withval" = yes; then
+  echo "$as_me:4827: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\EOF
+#define WITH_DMALLOC 1
+EOF
+
+  LIBS="$LIBS -ldmalloc"
+  LDFLAGS="$LDFLAGS -g"
+else
+  echo "$as_me:4836: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+else
+  echo "$as_me:4840: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi;
+
+echo "$as_me:4844: checking which of rx or regex is wanted" >&5
+echo $ECHO_N "checking which of rx or regex is wanted... $ECHO_C" >&6
+
+# Check whether --with-regex or --without-regex was given.
+if test "${with_regex+set}" = set; then
+  withval="$with_regex"
+  if test "$withval" = yes; then
+  ac_with_regex=1
+  echo "$as_me:4852: result: regex" >&5
+echo "${ECHO_T}regex" >&6
+  cat >>confdefs.h <<\EOF
+#define WITH_REGEX 1
+EOF
+
+  LIBOBJS="$LIBOBJS regex.o"
+fi
+fi;
+if test -z "$ac_with_regex"; then
+  echo "$as_me:4862: result: rx" >&5
+echo "${ECHO_T}rx" >&6
+  echo "$as_me:4864: checking for re_rx_search" >&5
+echo $ECHO_N "checking for re_rx_search... $ECHO_C" >&6
+if test "${ac_cv_func_re_rx_search+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4870 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char re_rx_search (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char re_rx_search ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_re_rx_search) || defined (__stub___re_rx_search)
+choke me
+#else
+f = re_rx_search;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4901: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:4904: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4907: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:4910: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_re_rx_search=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_re_rx_search=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4920: result: $ac_cv_func_re_rx_search" >&5
+echo "${ECHO_T}$ac_cv_func_re_rx_search" >&6
+if test $ac_cv_func_re_rx_search = yes; then
+  :
+else
+  LIBOBJS="$LIBOBJS rx.o"
+fi
+
+fi
+
+# ---------------------------------------------------------------------------
+if test "$ac_cv_func_alloca" = 'no'; then
+  LIBOBJS="$LIBOBJS xmalloc.o error.o"
+fi
+
+# ---------------------------------------------------------------------------
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+echo "$as_me:4943: checking that the GDBM library is available" >&5
+echo $ECHO_N "checking that the GDBM library is available... $ECHO_C" >&6
+if test ! -z "$gdbmdir" ; then
+  # look in given directory for header file
+  if test -r $gdbmdir/include/gdbm.h ; then
+    GDBM_INCLUDE="-I$gdbmdir/include" ;
+  elif test -r $gdbmdir/gdbm.h ; then
+    GDBM_INCLUDE="-I$gdbmdir" ;
+  fi
+
+  # look in given directory for library
+  if test -r $gdbmdir/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir" ;
+  elif test -r $gdbmdir/lib/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir/lib" ;
+  elif test -r $gdbmdir/.libs/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir/.libs" ;
+  fi
+
+  if test ! -z "$GDBM_LIBPATH" -a ! -z "$GDBM_INCLUDE" ; then
+    echo "$as_me:4963: result: $gdbmdir" >&5
+echo "${ECHO_T}$gdbmdir" >&6 ;
+  else
+    echo "$as_me:4966: result: can't find gdbm.h and libgdbm.a in $gdbmdir" >&5
+echo "${ECHO_T}can't find gdbm.h and libgdbm.a in $gdbmdir" >&6;
+    echo "$as_me:4968: checking looking for GDBM library in default locations" >&5
+echo $ECHO_N "checking looking for GDBM library in default locations... $ECHO_C" >&6
+  fi
+fi
+
+# look in default path and in /usr/local
+if test -z "$GDBM_INCLUDE" ; then
+  # try in system directory
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 4978 "configure"
+#include "confdefs.h"
+#include <gdbm.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4991: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:4994: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4997: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5000: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  success=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+success=no
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+  if test $success = "no"; then
+# last chance - look in /usr/local (eg FreeBSD)
+    GDBM_LIBPATH=-L/usr/local/lib
+    GDBM_INCLUDE=-I/usr/local/include
+    ac_save_CXXFLAGS="$CXXFLAGS"
+    ac_save_LIBS="$LIBS"
+      CXXFLAGS="$CXXFLAGS -I/usr/local/include"
+      LIBS="$LIBS -L/usr/local/lib -lgdbm"
+      cat >conftest.$ac_ext <<_ACEOF
+#line 5020 "configure"
+#include "confdefs.h"
+#include <gdbm.h>
+#include <stdio.h>
+
+int
+main ()
+{
+printf("%s",gdbm_version);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5034: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:5037: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:5040: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5043: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  success=/usr/local
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+success=no
+
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+      CXXFLAGS=$ac_save_CXXFLAGS
+      LIBS=$ac_save_LIBS
+  fi
+
+  echo "$as_me:5057: result: $success" >&5
+echo "${ECHO_T}$success" >&6
+  if test $success = "no"; then
+  { { echo "$as_me:5060: error: GDBM Library not available - cannot install" >&5
+echo "$as_me: error: GDBM Library not available - cannot install" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+cat >>confdefs.h <<\EOF
+#define HAVE_LIBGDBM  1
+EOF
+
+echo "$as_me:5069: checking that Perl 5 is available" >&5
+echo $ECHO_N "checking that Perl 5 is available... $ECHO_C" >&6
+success="no"
+pl_path="$PATH"
+IFS="${IFS=   }"; pl_save_ifs="$IFS"; IFS=":"
+for pl_dir in $pl_path; do
+  test -z "$pl_dir" && pl_dir=.
+  if test -x $pl_dir/perl; then
+    success="yes"
+    break
+  fi
+done
+IFS="$pl_save_ifs"
+
+if test $success = "yes"; then
+try=`perl configtest.pl` || try="0"
+try=`expr $try \> 5.000`
+if test $try = "1"; then
+echo "$as_me:5087: result: \"yes\"" >&5
+echo "${ECHO_T}\"yes\"" >&6
+else
+success="no"
+fi
+fi
+
+if test $success = "no"; then
+echo "$as_me:5095: result: \"no\"" >&5
+echo "${ECHO_T}\"no\"" >&6
+{ { echo "$as_me:5097: error: \"Perl 5 not available - cannot install\"" >&5
+echo "$as_me: error: \"Perl 5 not available - cannot install\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+success=no
+echo "$as_me:5103: checking \"whether STL library has known faults\"" >&5
+echo $ECHO_N "checking \"whether STL library has known faults\"... $ECHO_C" >&6
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 5107 "configure"
+#include "confdefs.h"
+#include <vector>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5120: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:5123: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5126: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5129: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  success=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+if test $success = "no"; then
+cat >conftest.$ac_ext <<_ACEOF
+#line 5140 "configure"
+#include "confdefs.h"
+#include <vector.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5153: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:5156: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5159: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5162: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  success="yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+
+if test $success = "no"; then
+cat >conftest.$ac_ext <<_ACEOF
+#line 5174 "configure"
+#include "confdefs.h"
+#include <ospace\\std\\vector>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5187: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:5190: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:5193: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:5196: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  success="yes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+
+if test $success = yes; then
+echo "$as_me:5207: result: \"no\"" >&5
+echo "${ECHO_T}\"no\"" >&6
+else
+echo "$as_me:5210: result: \"yes\"" >&5
+echo "${ECHO_T}\"yes\"" >&6
+{ { echo "$as_me:5212: error: \"STL Broken - Obtain newer version of GNU C Compiler\"" >&5
+echo "$as_me: error: \"STL Broken - Obtain newer version of GNU C Compiler\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+gsdlos=`uname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+# check for running bash under cygwin
+ if test "`echo $gsdlos | sed 's/cygwin//'`" != "$gsdlos" ;
+ then
+  gsdlos=windows
+ fi
+
+# ---------------------------------------------------------------------------
+if test "$ac_cv_func_alloca" = 'no'; then
+  LIBOBJS="$LIBOBJS xmalloc.o error.o"
+fi
+
+# ---------------------------------------------------------------------------
+
+moduleDirs=""
+MODULEDIRS=""
+for x in `find modules -mindepth 1 -maxdepth 2`; do
+  if test -d "$x"; then
+    d="$x/Makefile.in"
+    if test -e "$d"; then
+      moduleDirs="$moduleDirs $x/Makefile"
+      MODULEDIRS="$MODULEDIRS $x"
+    fi
+  fi
+done
+echo "Making$moduleDirs in modules directory"
+
+# ---------------------------------------------------------------------------
+ac_configure_args="$ac_configure_args --host=$host --target=$target"
+
+subdirs="$subdirs packages"
+
+# the list of folders in the src folder
+srclist="src/recpt/Makefile"
+
+ac_config_files="$ac_config_files lib/Makefile Makefile $srclist"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+    	  s/^\\([_$ac_cr_alnum]*_cv_[_$ac_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$ac_cr_alnum]*_cv_[_$ac_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[ 	]*VPATH[ 	]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ 	]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ 	]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:5332: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation="\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Report bugs to <bug-autoconf@gnu.org>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.50,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    shift
+    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+    shift
+    ;;
+  -*);;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_need_defaults=false;;
+  esac
+
+  case $1 in
+  # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:5505: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    shift
+    CONFIG_FILES="$CONFIG_FILES $1"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $1"
+    ac_need_defaults=false;;
+
+  # Handling of arguments.
+  'lib/Makefile' ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
+  'Makefile' ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  '$srclist' ) CONFIG_FILES="$CONFIG_FILES $srclist" ;;
+  'config.h' ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:5530: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+  *) { { echo "$as_me:5535: error: invalid argument: $1" >&5
+echo "$as_me: error: invalid argument: $1" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+  shift
+done
+
+exec 5>>config.log
+cat >&5 << _ACEOF
+
+## ----------------------- ##
+## Running config.status.  ##
+## ----------------------- ##
+
+This file was extended by $as_me 2.50, executed with
+  > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+
+_ACEOF
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit $?); exit $?; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@DEFS@,$DEFS,;t t
+s,@LIBS@,$LIBS,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@USE_FASTCGI@,$USE_FASTCGI,;t t
+s,@USE_LANGACTION@,$USE_LANGACTION,;t t
+s,@USE_CORBA@,$USE_CORBA,;t t
+s,@MICO_DIR@,$MICO_DIR,;t t
+s,@USE_Z3950@,$USE_Z3950,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@CC@,$CC,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@AWK@,$AWK,;t t
+s,@YACC@,$YACC,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@target@,$target,;t t
+s,@target_cpu@,$target_cpu,;t t
+s,@target_vendor@,$target_vendor,;t t
+s,@target_os@,$target_os,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@LN_S@,$LN_S,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@MICO_VER@,$MICO_VER,;t t
+s,@CPP@,$CPP,;t t
+s,@U@,$U,;t t
+s,@ANSI2KNR@,$ANSI2KNR,;t t
+s,@ALLOCA@,$ALLOCA,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@GDBM_LIBPATH@,$GDBM_LIBPATH,;t t
+s,@GDBM_INCLUDE@,$GDBM_INCLUDE,;t t
+s,@gsdlos@,$gsdlos,;t t
+s,@MODULEDIRS@,$MODULEDIRS,;t t
+s,@subdirs@,$subdirs,;t t
+CEOF
+
+EOF
+
+  cat >>$CONFIG_STATUS <<\EOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+  	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+  	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+    ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case $srcdir in
+  .)  ac_srcdir=.
+      if test -z "$ac_dots"; then
+         ac_top_srcdir=.
+      else
+         ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
+      fi ;;
+  [\\/]* | ?:[\\/]* )
+      ac_srcdir=$srcdir$ac_dir_suffix;
+      ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_dots$srcdir ;;
+  esac
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_dots$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:5792: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  configure_input="Generated automatically from `echo $ac_file_in |
+                                                 sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:5810: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5823: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='[ 	].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:5884: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:5895: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5908: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
+
+EOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\EOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ 	]*#[ 	]*define[ 	][ 	]*\(\([^ 	(][^ 	(]*\)([^)]*)\)[ 	]*\(.*\)$,${ac_dA}\2${ac_dB}\1${ac_dC}\3${ac_dD},gp
+t end
+s,^[ 	]*#[ 	]*define[ 	][ 	]*\([^ 	][^ 	]*\)[ 	]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+EOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\EOF
+s,^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+EOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if egrep "^[ 	]*#[ 	]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[ 	]*#[ 	]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # egrep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[ 	]*#[ 	]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\EOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated automatically by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated automatically by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:6025: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+        { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+      fi
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+
+{ (exit 0); exit 0; }
+EOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+#
+# CONFIG_SUBDIRS section.
+#
+if test "$no_recursion" != yes; then
+
+  # Remove --cache-file and --srcdir arguments so they do not pile up.
+  ac_sub_configure_args=
+  ac_prev=
+  for ac_arg in $ac_configure_args; do
+    if test -n "$ac_prev"; then
+      ac_prev=
+      continue
+    fi
+    case $ac_arg in
+    -cache-file | --cache-file | --cache-fil | --cache-fi \
+    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+      ac_prev=cache_file ;;
+    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
+    | --c=*)
+      ;;
+    --config-cache | -C)
+      ;;
+    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+      ac_prev=srcdir ;;
+    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+      ;;
+    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
+    esac
+  done
+
+  for ac_subdir in : $subdirs; do test "x$ac_subdir" = x: && continue
+
+    # Do not complain, so a configure script can configure whichever
+    # parts of a large source tree are present.
+    test -d $srcdir/$ac_subdir || continue
+
+    { echo "$as_me:6129: configuring in $ac_subdir" >&5
+echo "$as_me: configuring in $ac_subdir" >&6;}
+    case $srcdir in
+    .) ;;
+    *) { case "./$ac_subdir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+  *)                      as_incr_dir=.;;
+esac
+as_dummy="./$ac_subdir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=$as_mkdir_dir ;;
+    *)
+      as_incr_dir=$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+       if test -d ./$ac_subdir; then :;
+       else
+         { { echo "$as_me:6151: error: cannot create \`pwd\`/$ac_subdir" >&5
+echo "$as_me: error: cannot create \`pwd\`/$ac_subdir" >&2;}
+   { (exit 1); exit 1; }; }
+       fi
+       ;;
+    esac
+
+    ac_popdir=`pwd`
+    cd $ac_subdir
+
+    # A "../" for each directory in /$ac_subdir.
+    ac_dots=`echo $ac_subdir |
+             sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+    case $srcdir in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=$srcdir ;;
+    [\\/]* | ?:[\\/]* ) # Absolute path.
+      ac_sub_srcdir=$srcdir/$ac_subdir ;;
+    *) # Relative path.
+      ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+    esac
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure.gnu; then
+      ac_sub_configure="$SHELL '$ac_sub_srcdir/configure.gnu'"
+    elif test -f $ac_sub_srcdir/configure; then
+      ac_sub_configure="$SHELL '$ac_sub_srcdir/configure'"
+    elif test -f $ac_sub_srcdir/configure.in; then
+      ac_sub_configure=$ac_configure
+    else
+      { echo "$as_me:6182: WARNING: no configuration information is in $ac_subdir" >&5
+echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2;}
+      ac_sub_configure=
+    fi
+
+    # The recursion is here.
+    if test -n "$ac_sub_configure"; then
+      # Make the cache file name correct relative to the subdirectory.
+      case $cache_file in
+      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
+      *) # Relative path.
+        ac_sub_cache_file=$ac_dots$cache_file ;;
+      esac
+
+      { echo "$as_me:6196: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" >&5
+echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" >&6;}
+      # The eval makes quoting arguments work.
+      eval $ac_sub_configure $ac_sub_configure_args \
+           --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir ||
+        { { echo "$as_me:6201: error: $ac_sub_configure failed for $ac_subdir" >&5
+echo "$as_me: error: $ac_sub_configure failed for $ac_subdir" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    cd $ac_popdir
+  done
+fi
+
Index: /other-projects/trunk/greenorg/configure.in
===================================================================
--- /other-projects/trunk/greenorg/configure.in	(revision 14149)
+++ /other-projects/trunk/greenorg/configure.in	(revision 14149)
@@ -0,0 +1,394 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(lib/text_t.h)
+AC_CONFIG_HEADER(config.h)
+
+PACKAGE=gsdl
+VERSION=2.1
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
+
+dnl
+dnl Set use of fast cgi
+dnl
+USE_FASTCGI=0
+if test USE_FASTCGI = 1; then
+AC_DEFINE(USE_FASTCGI)
+AC_SUBST(USE_FASTCGI)
+fi
+
+dnl
+dnl Set use of langaction
+dnl
+dnl USE_LANGACTION=0
+if test USE_LANGACTION = 1; then
+AC_DEFINE(USE_LANGACTION)
+AC_SUBST(USE_LANGACTION)
+fi
+
+dnl
+dnl Set use of corba
+dnl
+AC_ARG_ENABLE(corba, [  --enable-corba          Enable CORBA support], USE_CORBA=1, USE_CORBA=0)
+AC_DEFINE_UNQUOTED(USE_CORBA, $USE_CORBA)
+AC_SUBST(USE_CORBA)
+
+AC_ARG_WITH(micodir, [  --with-micodir          Use installed MICO directory], MICO_DIR=$enableval, MICO_DIR="default")
+AC_DEFINE_UNQUOTED(MICO_DIR, "$MICO_DIR")
+AC_SUBST(MICO_DIR)
+
+dnl
+dnl Set use of z39.50
+dnl
+AC_ARG_ENABLE(z3950, [  --enable-z3950          Enable Z39.50 client support], USE_Z3950=1, USE_Z3950=0)
+if test USE_Z3950 = 1; then
+AC_DEFINE(USE_Z3950, $USE_Z3950)
+AC_SUBST(USE_Z3950)
+fi
+
+dnl
+dnl look for libgdbm if not in standard location
+dnl
+AC_ARG_WITH(gdbm, [  --with-gdbm=dir         Use local gdbm library and headers], gdbmdir=$withval)
+
+dnl Checks for programs.
+LDFLAGS=
+dnl only set CFLAGS if not already set in environment
+if test -z "$CFLAGS"; then
+CFLAGS=-O2
+fi
+AC_SUBST(CFLAGS)
+
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_AWK
+AC_PROG_YACC
+dnl get $target_cpu, $target_vendor, and $target_os
+dnl (as well as host_*)
+AC_CANONICAL_SYSTEM
+dnl do we actually want this? It adds a prefix based on host, system etc
+dnl AC_ARG_PROGRAM
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+
+#moved CORBA MICO directory test to get version of MICO
+if test $USE_CORBA = 1; then
+
+if test $MICO_DIR = "default"; then
+#do something
+MICO_INC="-I packages/mico/mico/include"
+else
+#build the micotest program
+MICO_INC= ""
+if test $MICO_DIR != yes; then
+MICO_INC="-I $MICO_DIR"
+fi
+fi
+
+#get MICO_VER value
+sh -c "$CC -c micotest.cpp -o micotest.o $MICO_INC 2>&1" > /dev/null
+sh -c "$CC -o micotest micotest.o -lstdc++ 2>&1" > /dev/null
+MICO_VER=`./micotest` || MICO_VER=2.3.5
+sh -c "rm micotest"
+sh -c "rm micotest.o"
+
+#do test of MICO_VER
+if test MICO_VER != 0; then
+AC_DEFINE(MICO_VER)
+AC_SUBST(MICO_VER)
+fi
+#end USE_CORBA test
+fi
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_AIX
+AC_ISC_POSIX
+AC_MINIX
+fp_C_PROTOTYPES
+AC_C_CONST
+AC_TYPE_OFF_T
+AC_TYPE_SIZE_T
+AC_HEADER_TIME
+AC_STRUCT_TM
+
+dnl --- This should be in the stdc checking -----------------
+if test "$ac_cv_prog_cc_stdc" = '-Xc'; then
+dnl The Pyramids running SMP_DC.OSx on MIPS r3000 chips with
+dnl /usr/opt/cc3.11/bin/cc treat -Xc as full ANSI mode - no POSIX or
+dnl XOPEN extensions (like popen).
+dnl Unfortunately -D_{XOPEN,POSIX}_SOURCE can't provide all that mg
+dnl needs. So drop back to -Xa
+AC_TRY_COMPILE(
+[#include <stdio.h>
+], [ FILE *rubbish = popen("yes", "r"); ],,
+[CC="`echo $CC | sed 's/-Xc/-Xa/'`"    ac_cv_prog_cc_stdc='-Xa'])
+fi
+dnl ----------------------
+
+
+dnl Checks for libraries.
+dnl Replace `main' with a function in -lg:
+AC_CHECK_LIB(g, main)
+dnl Replace `main' with a function in -lgdbm:
+AC_CHECK_LIB(gdbm, main)
+dnl Replace `main' with a function in -lm:
+AC_CHECK_LIB(m, main)
+dnl Replace `main' with a function in -lstdc++:
+AC_CHECK_LIB(stdc++, main)
+dnl Replace `main' with a function in -lcrypt:
+AC_CHECK_LIB(crypt, main)
+
+
+dnl Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h crypt.h string.h memory.h sys/procfs.h)
+AC_EGREP_HEADER(fread, stdio.h, AC_DEFINE(HAVE_FREAD_DECL))
+AC_EGREP_HEADER(fgetc, stdio.h, AC_DEFINE(HAVE_FGETC_DECL))
+AC_EGREP_HEADER(pr_brksize, sys/procfs.h, AC_DEFINE(HAVE_PR_BRKSIZE))
+
+dnl Checks for library functions.
+AC_FUNC_ALLOCA
+AC_PROG_GCC_TRADITIONAL
+AC_TYPE_SIGNAL
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS(ftime select strftime strtol getrusage times mallinfo setbuffer getpagesize strerror)
+AC_REPLACE_FUNCS(ftruncate strstr strcasecmp)
+
+dnl see if gettext is in libc. (try the textdomain() function).
+AC_CHECK_FUNC( textdomain , AC_DEFINE(ENABLE_NLS ,1) )
+
+# *** Custom checking (based on GNU tar configure.in) ***
+# ---------------------------------------------------------------------------
+AC_MSG_CHECKING(for HP-UX needing gmalloc)
+if test "`(uname -s) 2> /dev/null`" = 'HP-UX'; then
+  AC_MSG_RESULT(yes)
+  LIBOBJS="$LIBOBJS gmalloc.o"
+  AC_DEFINE(HAVE_VALLOC)
+else
+  AC_MSG_RESULT(no)
+  AC_CHECK_FUNCS(valloc)
+fi
+
+fp_WITH_DMALLOC
+fp_WITH_REGEX
+
+# ---------------------------------------------------------------------------
+if test "$ac_cv_func_alloca" = 'no'; then
+dnl    support functions for alloca.c
+  LIBOBJS="$LIBOBJS xmalloc.o error.o"
+fi
+
+
+# ---------------------------------------------------------------------------
+
+dnl
+dnl Switch into C++
+dnl
+AC_LANG_CPLUSPLUS
+
+dnl
+dnl Check that the GDBM library is available
+dnl
+dnl check libgdbm manually, in case it's not in the standard location.
+
+AC_MSG_CHECKING(that the GDBM library is available)
+if test ! -z "$gdbmdir" ; then
+  # look in given directory for header file
+  if test -r $gdbmdir/include/gdbm.h ; then
+    GDBM_INCLUDE="-I$gdbmdir/include" ;
+  elif test -r $gdbmdir/gdbm.h ; then
+    GDBM_INCLUDE="-I$gdbmdir" ;
+  fi
+
+  # look in given directory for library
+  if test -r $gdbmdir/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir" ;
+  elif test -r $gdbmdir/lib/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir/lib" ;
+  elif test -r $gdbmdir/.libs/libgdbm.a ; then
+    GDBM_LIBPATH="-L$gdbmdir/.libs" ;
+  fi
+
+  if test ! -z "$GDBM_LIBPATH" -a ! -z "$GDBM_INCLUDE" ; then
+    AC_MSG_RESULT($gdbmdir) ;
+  else
+    AC_MSG_RESULT(can't find gdbm.h and libgdbm.a in $gdbmdir);
+    AC_MSG_CHECKING(   looking for GDBM library in default locations)
+  fi
+fi
+
+# look in default path and in /usr/local
+if test -z "$GDBM_INCLUDE" ; then
+  # try in system directory 
+  AC_TRY_COMPILE(
+  [#include <gdbm.h>
+],
+  [],
+  success=yes,
+  success=no
+  )
+
+  if test $success = "no"; then
+# last chance - look in /usr/local (eg FreeBSD)
+    GDBM_LIBPATH=-L/usr/local/lib
+    GDBM_INCLUDE=-I/usr/local/include
+    ac_save_CXXFLAGS="$CXXFLAGS"
+    ac_save_LIBS="$LIBS"
+      CXXFLAGS="$CXXFLAGS -I/usr/local/include"
+      LIBS="$LIBS -L/usr/local/lib -lgdbm"
+      AC_TRY_LINK(
+  	[#include <gdbm.h>
+#include <stdio.h>
+	],
+  	[printf("%s",gdbm_version);],
+  	success=/usr/local,
+  	success=no
+      )
+      CXXFLAGS=$ac_save_CXXFLAGS
+      LIBS=$ac_save_LIBS
+  fi
+
+  AC_MSG_RESULT($success)
+  if test $success = "no"; then
+  AC_MSG_ERROR(GDBM Library not available - cannot install)
+  fi
+fi
+dnl I don't think anything actually checks this define, but...
+AC_DEFINE(HAVE_LIBGDBM , 1)
+
+AC_SUBST(GDBM_LIBPATH)
+AC_SUBST(GDBM_INCLUDE)
+
+dnl
+dnl Now check that Perl is actually around, and can be found
+dnl
+AC_MSG_CHECKING(that Perl 5 is available)
+success="no"
+pl_path="$PATH"
+IFS="${IFS=   }"; pl_save_ifs="$IFS"; IFS=":"
+for pl_dir in $pl_path; do
+  test -z "$pl_dir" && pl_dir=.
+  if test -x $pl_dir/perl; then
+    success="yes"
+    break
+  fi
+done
+IFS="$pl_save_ifs"
+
+dnl
+dnl Perl actually can be run; now we see if it is version 5 by
+dnl running a sample script (which returns a "clean" version number
+dnl and then tests the result using expr.  If perl errors in some
+dnl way (eg. broken Perl executable, missing script), we set a failure
+dnl value ("0") and then proceed as best we can
+dnl
+if test $success = "yes"; then
+try=`perl configtest.pl` || try="0"
+try=`expr $try \> 5.000`
+if test $try = "1"; then
+AC_MSG_RESULT("yes")
+else
+success="no"
+fi
+fi
+
+if test $success = "no"; then
+AC_MSG_RESULT("no")
+AC_MSG_ERROR("Perl 5 not available - cannot install")
+fi
+
+dnl
+dnl Check if the STL library has any known faults;
+dnl In GCC 2.7.2.x series, some STL library headers are missing
+dnl a file called "new" which is referred to by other headers
+dnl (eg. vector/vector.h); if this applies, then all use of the
+dnl STL will cause a compile fail, so we'd better let the user
+dnl know now, before things really go wrong!
+dnl
+success=no
+AC_MSG_CHECKING("whether STL library has known faults")
+
+dnl - first shot, try simple good old vector on its own
+AC_TRY_COMPILE(
+[#include <vector>
+], 
+[],
+success=yes,
+)
+
+dnl - try using the .h equivalent
+if test $success = "no"; then
+AC_TRY_COMPILE(
+[#include <vector.h>
+], 
+[],
+success="yes",
+)
+fi
+
+dnl - now try for the objectspace headers
+if test $success = "no"; then
+AC_TRY_COMPILE(
+[#include <ospace\\std\\vector>
+], 
+[],
+success="yes",
+)
+fi
+
+if test $success = yes; then
+AC_MSG_RESULT("no")
+else
+AC_MSG_RESULT("yes")
+AC_MSG_ERROR("STL Broken - Obtain newer version of GNU C Compiler")
+fi
+
+gsdlos=`uname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+# check for running bash under cygwin
+ if test "`echo $gsdlos | sed 's/cygwin//'`" != "$gsdlos" ;
+ then
+  gsdlos=windows
+ fi
+AC_SUBST(gsdlos)
+
+# ---------------------------------------------------------------------------
+if test "$ac_cv_func_alloca" = 'no'; then
+dnl    support functions for alloca.c
+  LIBOBJS="$LIBOBJS xmalloc.o error.o"
+fi
+
+# ---------------------------------------------------------------------------
+
+dnl
+dnl Locate all children of the modules folder
+dnl
+moduleDirs=""
+MODULEDIRS=""
+for x in `find modules -mindepth 1 -maxdepth 2`; do
+  if test -d "$x"; then
+    d="$x/Makefile.in"
+    if test -e "$d"; then
+dnl      echo $d
+      moduleDirs="$moduleDirs $x/Makefile"
+      MODULEDIRS="$MODULEDIRS $x"
+    fi
+  fi
+done
+echo "Making$moduleDirs in modules directory"
+AC_SUBST(MODULEDIRS)
+
+# ---------------------------------------------------------------------------
+dnl for Darwin, as our packages don't (yet) correctly guess our system type.
+ac_configure_args="$ac_configure_args --host=$host --target=$target"
+AC_CONFIG_SUBDIRS(packages)
+
+# the list of folders in the src folder
+srclist="src/recpt/Makefile"
+
+AC_OUTPUT(lib/Makefile Makefile $srclist)
+
+
Index: /other-projects/trunk/greenorg/docs/Install-Notes-osx.html
===================================================================
--- /other-projects/trunk/greenorg/docs/Install-Notes-osx.html	(revision 14149)
+++ /other-projects/trunk/greenorg/docs/Install-Notes-osx.html	(revision 14149)
@@ -0,0 +1,201 @@
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html;charset=utf-8">
+<title>Greenstone 2.50 for Mac OS X</title>
+</head>
+
+<body>
+<H1>Greenstone 2.50a for Mac OS X</H1>
+
+<p>
+This package contains a binary version of Greenstone 2.50a, compiled on
+Mac OS X version 10.2.6 and tested on 10.3.2.
+It should work on Jaguar (OS X version 10.3) and earlier.
+</p>
+
+<p>There may be a newer version of this help file online at
+<a href="http://www.greenstone.org/docs/Install-Notes-osx.html"
+>http://www.greenstone.org/docs/Install-Notes-osx.html</a>.
+</p>
+
+<p>This packages includes the Greenstone Librarian Interface, a new module
+designed to make it easier to create collections.
+</p>
+
+
+<p>The Greenstone Mac OSX Binary package 2.50a is identical to Version
+2.50 except it includes a fix for the installation of "GLI". If you
+have already downloaded version 2.50, instead of downloading 2.50a you
+can correct this mistake by editting the file
+<tt>/Applications/Greenstone/gli/classes/xml/config.xml</tt>
+and changing the line that says
+<pre>
+&lt;Argument&nbsp;name="general.exec_address"&gt;http://127.0.0.1/cgi-bin/library&lt;/Address&gt;
+</pre>
+to
+<pre>
+&lt;Argument&nbsp;name="general.exec_address"&gt;http://127.0.0.1/cgi-bin/library&lt;/Argument&gt;
+</pre>
+</p>
+
+
+<H2>Installation</H2>
+The recommended way to install Greenstone 2.50 for Mac OS X is by using the
+"Greenstone Installer".
+
+<h3>Using the "Greenstone Installer"</h3>
+This requires an administrator account so that
+required files can be copied into the correct locations (such as for the Apache
+Webserver). By default this will install into the /Applications/Greenstone
+folder.
+
+<h3>Manual Install</h3>
+You may copy the <tt>Greenstone</tt> directory to anywhere
+you like on the hard drive, but you will need to manually make some changes:
+<ol>
+ <li>edit <tt>Greenstone/cgi-bin/gsdlsite.cfg</tt> and set the correct
+ Greenstone directory for the <tt>gsdlhome</tt> configuration item.</li>
+ <li>edit <tt>Greenstone/gli/gli.sh</tt> and provide the correct Greenstone
+ directory for the <tt>gsdlpath</tt> flag.</li>
+ <li>Copy or symbolic link some files into the Apache Webserver's directories:
+  <ul>
+   <li><tt>Greenstone/cgi-bin/gsdlsite.cfg</tt> into 
+     <tt>/Library/WebServer/CGI-Executables</tt></li>
+   <li><tt>Greenstone/cgi-bin/library</tt> into 
+     <tt>/Library/WebServer/CGI-Executables</tt></li>
+   <li>Create a <tt>/Library/WebServer/Documents/gsdl</tt> directory</li>
+   <li><tt>Greenstone/images</tt> into
+     <tt>/Library/WebServer/Documents/gsdl/images</tt></li>
+   <li><tt>Greenstone/collect</tt> into
+     <tt>/Library/WebServer/Documents/gsdl/collect</tt></li>
+  </ul>
+ </li>
+ <li>The Webserver needs to be able to write to some files in the
+ <tt>Greenstone/etc</tt> directory: <tt>error.txt, history.db, key.db,
+ usage.txt</tt> and <tt> users.db</tt>.
+ 
+ <li>Because the default password for the Greenstone web administration
+  interface can't be changed during a manual install, the web administration is
+  turned off by default. Edit the <tt>Greenstone/etc/main.cfg</tt> file and
+  change the "status" and "collector" options from disabled to enabled. After
+  this, the first thing you should do is use the web interface to change the
+  administrator password. (The default password is "admin").
+ </li>
+</ol>
+
+<p>
+Once Greenstone has been installed and successfully set up to run under
+Apache Webserver, you should be able to visit
+<a href="http://127.0.0.1/cgi-bin/library">http://127.0.0.1/cgi-bin/library</a>
+to see your Greenstone installation via the web.</p>
+
+
+
+
+<h2>"Apache" Web Server Setup</h2>
+
+<p>Mac OSX comes with a built-in webserver, named "apache".
+To configure apache to run Greenstone via the web, you have to place
+some Greenstone files in certain places. With Mac OS X, only users in the
+"admin" group can modify apache settings.
+</p>
+
+<p>
+Make sure apache is running. You can start apache by clicking on the
+Apple in the top-left corner of the screen, going to "System
+Preferences...", and clicking on "Sharing" in the Internet & Network
+group. If it says Web Sharing On then apache is already running. If it
+is off and you can't turn it on, then someone who knows the
+administrator password must click on the lock at the bottom of the
+window.
+</p>
+
+<p>If you want other people to be able to access your Greenstone
+installation via a network, make sure that "Personal Web Sharing" is set
+to "allowed" in the Firewall properties tab.</p>
+
+
+<h2>Interface Language Support</h2>
+<p>
+This version of greenstone only includes English, French, Russian and Spanish
+language support in the base install. To get support for all the other languages
+that Greenstone can use, please install the Greenstone Language Pack from
+<a href="http://sourceforge.net/projects/greenstone">Greenstone's Sourceforge pages</a>.
+(Choose the unix.sh version of the Language Pack.)
+</p>
+
+
+<h2>Greenstone Librarian Interface</h2>
+<p>
+This binary distribution of Greenstone includes the Greenstone
+Librarian Interface (GLI). This interface is a new way of creating and
+modifying digital libraries, and is more user-friendly than the command-line
+and web-based methods.
+</p> <p>
+When you first start the Greenstone Librarian Interface, it will ask for the
+URL to the local running Webserver. If you installed Greenstone into the
+default locations, then You should enter the above url:
+<blockquote>http://127.0.0.1/cgi-bin/library</blockquote>
+If you choose not to enter this during the first start up, you can change this
+setting at anytime by going to the <tt>File</tt> menu, selecting
+<tt>Preferences</tt>, and change the "Library Path" setting in the
+<tt>Connection</tt> tab.
+</p> <p>
+If you chose to use the Greenstone Installer, then you will find the Greenstone
+Librarian Interface installed by default in
+<tt>/Applications/Greenstone/GLI</tt>.
+</p>
+
+<h2>Other</h2>
+<p>
+This distribution of Greenstone for Mac OS X includes a working
+version of the KEA Keyphrase extractor. Unfortunately it is not yet
+incorporated into the Librarian Interface, but it can be used by
+adding "-extract_keyphrases" as a custom argument to plugins.  In the
+Librarian Interface, this is done in the "Design" tab, under
+"Plug-ins", and then "Configure Selected Plugin". Otherwise if you are
+not using the Librarian Interface, this can be added manually after
+the plugin's name in the collection's <tt>collect.cfg</tt> file.
+</p>
+
+<p>
+This distribution includes Greenstone's "Demo" collection. It is pre-built,
+but the source documents are also provided so that you can re-build it
+using the command line instructions, the "Collector" web
+interface, or you can clone the collection using the Greenstone Librarian
+Interface.
+</p>
+
+<p>
+Mac OS X version 10.3 uses a more recent version of the perl scripting
+language (perl 5.8) than 10.2 and earlier (perl 5.6). While we believe that
+this distribution will work with perl 5.8, please let us know if you
+encounter any problems that appear to be related to perl.
+</p>
+
+<p>
+If you want to use the Image Plugin, you will need to do two things:
+<ol>
+<li>Download and install the ImageMagick package if it is not already
+ installed. Greenstone's ImagePlug needs the "<tt>convert</tt>" and
+ "<tt>identify</tt>" programs in this package.</li>
+<li>Make sure your Greenstone can find these programs. If they are installed
+ anywhere other than "/usr/bin", then you will probably need to set your
+PATH correctly, both in the command line, and for the Greenstone Librarian
+Interface. Add the following line somewhere after the first line of
+/Applications/Greenstone/gli/gli.sh:<br>
+&nbsp;&nbsp;&nbsp;<tt>PATH="$PATH:/usr/local/bin"</tt><br>
+(assuming you installed it into the /usr/local/bin directory.)
+</li>
+</ol>
+</p>
+
+
+<p>
+For support, feedback, and more documentation, visit Greenstone's
+<a href="http://www.greenstone.org/">home page</a>.
+</p>
+<p>
+<address>Last modified 27 Apr 2004 by John McPherson</address> 
+</body>
+</html>
Index: /other-projects/trunk/greenorg/etc/main.cfg
===================================================================
--- /other-projects/trunk/greenorg/etc/main.cfg	(revision 14149)
+++ /other-projects/trunk/greenorg/etc/main.cfg	(revision 14149)
@@ -0,0 +1,24 @@
+logcgiargs      false
+usecookies      false
+LogDateFormat   LocalTime
+
+macrofiles      style.dm base.dm pref.dm home.dm docs.dm download.dm gsoc.dm \
+                examples.dm support.dm faq.dm report.dm reportSuva.dm \
+		english.dm french.dm spanish.dm russian.dm supportform.dm \
+		factsheet.dm intn.dm
+
+Encoding shortname=utf-8 "longname=Unicode (UTF-8)"
+
+Language shortname=en longname=English default_encoding=utf-8
+Language shortname=es longname=Spanish default_encoding=utf-8
+Language shortname=fr longname=French default_encoding=utf-8
+Language shortname=ru longname=Russian default_encoding=utf-8
+
+pageparam       faqfull 0
+macroprecedence l,faqfull
+
+cgiarg          shortname=a argdefault=p
+cgiarg          shortname=p argdefault=home
+cgiarg          shortname=w argdefault=utf-8
+cgiarg          shortname=faqfull "longname=faq all on one page" multiplechar=false \
+                argdefault=0 defaultstatus=weak savedarginfo=mustnot
Index: /other-projects/trunk/greenorg/gsoc2007.html
===================================================================
--- /other-projects/trunk/greenorg/gsoc2007.html	(revision 14149)
+++ /other-projects/trunk/greenorg/gsoc2007.html	(revision 14149)
@@ -0,0 +1,65 @@
+
+<html>
+<head>
+<title>Greenstone Digital Library Software</title>
+<link rel="stylesheet" type="text/css" href="/images/style.css">
+<script src="/images/scripts.js">
+</script>
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1209851-1";
+urchinTracker();
+</script>
+
+</head>
+
+<body background="/images/chalk.gif" class="default" bgcolor="#ffffff">
+
+<table border="0" cellspacing="0" cellpadding="0" width="537" class="default">
+<tr><td><img src="/images/spacer.gif" width="80"></td><td>
+
+<table width="537">
+<tr valign=top>
+<td><a href="/cgi-bin/library?e=p-en-gsoc-utfZz-8&a=p&p=home"><img src="/images/gsdlhead.gif" border="0"></a></td>
+<td align=right><a href="/cgi-bin/library?e=p-en-gsoc-utfZz-8&a=p&p=homepref" onMouseover="roll('pref',1);" onMouseOut="roll('pref',0);"><img
+name="pref" src="/images/cprefof.gif" onLoad="gbutton(this,'/images/cprefon.gif');" border="0" alt="Preferences page" title="Preferences page"></a></td>
+</tr>
+</table>
+
+<p>
+<nobr>
+<a href="/cgi-bin/library?e=p-en-gsoc-utfZz-8&a=p&p=download" onMouseover="roll('download',1);" onMouseOut="roll('download',0);"><img
+name="download" src="/images/tdlof.gif" onLoad="gbutton(this,'/images/tdlon.gif');" border="0" alt="Download" title="Download"></a><img src="/images/tspace.gif" width="25" height="17"><a href="/cgi-bin/library?e=p-en-gsoc-utfZz-8&a=p&p=examples" onMouseover="roll('examples',1);" onMouseOut="roll('examples',0);"><img
+name="examples" src="/images/texmplof.gif" onLoad="gbutton(this,'/images/texmplon.gif');" border="0" alt="Examples" title="Examples"></a><img src="/images/tspace.gif" width="25" height="17"><a href="http://greenstone.sourceforge.net/wiki/index.php" onMouseover="roll('docs',1);" onMouseOut="roll('docs',0);"><img
+name="docs" src="/images/tdocsof.gif" onLoad="gbutton(this,'/images/tdocson.gif');" border="0" alt="Docs" title="Docs"></a><img src="/images/tspace.gif" width="25" height="17"><a href="http://greenstone.sourceforge.net/wiki/index.php/Greenstone_FAQ" onMouseover="roll('faq',1);" onMouseOut="roll('faq',0);"><img
+name="faq" src="/images/tfaqof.gif" onLoad="gbutton(this,'/images/tfaqon.gif');" border="0" alt="FAQ" title="FAQ"></a><img src="/images/tspace.gif" width="25" height="17"><a href="/cgi-bin/library?e=p-en-gsoc-utfZz-8&a=p&p=support" onMouseover="roll('support',1);" onMouseOut="roll('support',0);"><img
+name="support" src="/images/tsupof.gif" onLoad="gbutton(this,'/images/tsupon.gif');" border="0" alt="Support" title="Support"></a>
+</nobr>
+</p>
+
+
+
+<p class="title">Google Summer of Code 2007</p>
+
+Project Ideas:<br/>
+<br/>
+<h4>1. Integration with Fedora</h4>
+<p>Investigate the integration of the Fedora digital object repository system with Greenstone 3. Greenstone can already import content via several protocols (e.g. z39.50, OAI),  this project would examine whether that content can be sourced from a Fedora repository.</p>
+
+<h4>2. Greenstone 3 as an OAI Server</h4>
+<p>Greenstone 2 works with OAI but the new Java/Tomcat framework for Greenstone 3 means we need to update this solution to provide OAI services.</p>
+
+<h4>3. Access Control in Greenstone 3</h4>
+<p>Implement a user access control mechanism in Greenstone 3, possibly via using a standard such as XACML.</p>
+
+<h4>4. Greenstone and Location-based search</h4>
+<p>Implement a search and browse function for locations in Greenstone. This can focus on the interface or just on finding a way to index existing collections based on location. Keep in mind that location names may be ambiguous depending on the country.</p>
+
+
+
+</td></tr></table>
+<p>&nbsp;</p>
+</body>
+</html>
+
Index: /other-projects/trunk/greenorg/images/scripts.js
===================================================================
--- /other-projects/trunk/greenorg/images/scripts.js	(revision 14149)
+++ /other-projects/trunk/greenorg/images/scripts.js	(revision 14149)
@@ -0,0 +1,21 @@
+
+var loaded = new Array();
+function gbutton (image, onimage) {
+  if (image && image.src && (image.out == null || typeof(image.out) == typeof(void(0)))) {
+    s = image.src;
+    image.out = new Image();
+    image.out.src = s;
+    image.over = new Image();
+    image.over.src = onimage;
+    loaded[image.name] = image;
+  }
+}
+
+function roll (imagename, over) {
+  if (document.images) {
+    if (over) i = "over";
+    else i = "out";
+    image = loaded[imagename];
+    if (image) image.src = eval("image."+i+".src");
+  }
+}
Index: /other-projects/trunk/greenorg/images/style.css
===================================================================
--- /other-projects/trunk/greenorg/images/style.css	(revision 14149)
+++ /other-projects/trunk/greenorg/images/style.css	(revision 14149)
@@ -0,0 +1,45 @@
+A:link {color: darkgreen}
+A:hover {color: olivedrab}
+A:active {color: darkgreen}
+A:visited {color: darkgoldenrod}
+
+.default {
+      font-family: Arial,Helvetica,sans-serif;
+      font-size: 14px;
+      padding: 0 0 0 0;
+      margin: 0 0 0 0;
+}
+
+.title {
+      font-weight: bold;
+      font-size: 18px;
+}
+
+.subheading {
+      font-weight: bold;
+      font-size: 16px;
+}
+
+.faq-title {
+      font-weight: bold;
+}
+
+.ex_t:link {
+      font-weight: bold;
+      font-size: 14px;
+}
+
+.ex_t:visited {
+      font-weight: bold;
+      font-size: 14px;
+}
+
+.ex_d {
+      font-size: 12px;
+}
+
+table.faq-table tr td, table.faq-table tr th {
+    font-size: 14px;
+    vertical-align: top;
+    text-align: left;
+}
Index: /other-projects/trunk/greenorg/install-sh
===================================================================
--- /other-projects/trunk/greenorg/install-sh	(revision 14149)
+++ /other-projects/trunk/greenorg/install-sh	(revision 14149)
@@ -0,0 +1,238 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+# This comes from X11R5.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+#
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+tranformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd="$cpprog"
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd="$stripprog"
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "install:	no input file specified"
+	exit 1
+else
+	true
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+	
+	if [ -d $dst ]; then
+		instcmd=:
+	else
+		instcmd=mkdir
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad 
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f $src -o -d $src ]
+	then
+		true
+	else
+		echo "install:  $src does not exist"
+		exit 1
+	fi
+	
+	if [ x"$dst" = x ]
+	then
+		echo "install:	no destination specified"
+		exit 1
+	else
+		true
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d $dst ]
+	then
+		dst="$dst"/`basename $src`
+	else
+		true
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='	
+'
+IFS="${IFS-${defaultIFS}}"
+
+oIFS="${IFS}"
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS="${oIFS}"
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp="${pathcomp}${1}"
+	shift
+
+	if [ ! -d "${pathcomp}" ] ;
+        then
+		$mkdirprog "${pathcomp}"
+	else
+		true
+	fi
+
+	pathcomp="${pathcomp}/"
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd $dst &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		dstfile=`basename $dst $transformbasename | 
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ] 
+	then
+		dstfile=`basename $dst`
+	else
+		true
+	fi
+
+# Make a temp file name in the proper directory.
+
+	dsttmp=$dstdir/#inst.$$#
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd $src $dsttmp &&
+
+	trap "rm -f ${dsttmp}" 0 &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+
+# Now rename the file to the real destination.
+
+	$doit $rmcmd -f $dstdir/$dstfile &&
+	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+
+fi &&
+
+
+exit 0
Index: /other-projects/trunk/greenorg/lib/Makefile.in
===================================================================
--- /other-projects/trunk/greenorg/lib/Makefile.in	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/Makefile.in	(revision 14149)
@@ -0,0 +1,86 @@
+###########################################################################
+#
+# Makefile -- lib
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 1999  The New Zealand Digital Library Project
+#
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+
+
+AR = ar
+CC = @CC@
+CPP = @CXX@
+#CCFLAGS = @CFLAGS@ -Wall -Wunused -pedantic -W -Woverloaded-virtual
+CCFLAGS = @CFLAGS@
+MCFLAGS = -Wall -Wunused
+DEFS = @DEFS@
+INCLUDES = -I..
+RANLIB = @RANLIB@
+
+COMPILE = $(CC) -c $(CCFLAGS) $(DEFS) $(INCLUDES)
+CPPCOMPILE = $(CPP) -c $(CCFLAGS) $(DEFS) $(INCLUDES)
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+.c.o:
+	$(COMPILE) $<
+
+.SUFFIXES: .cpp .o
+.cpp.o:
+	$(CPPCOMPILE) $< 
+
+HEADERS = \
+  cfgread.h      fileutil.h     gsdlunicode.h  gsdltools.h text_t.h \
+  display.h      gsdlconf.h     cnfgable.h     gsdltimes.h cnfgator.h  unitool.h
+
+SOURCES = \
+  cfgread.cpp      fileutil.cpp     text_t.cpp     cnfgable.cpp \
+  display.cpp      gsdlunicode.cpp  gsdltimes.cpp  gsdltools.cpp \
+  cnfgator.cpp     unitool.c
+
+OBJECTS = \
+  cfgread.o        fileutil.o       text_t.o     cnfgable.o \
+  display.o        gsdlunicode.o    gsdltimes.o  gsdltools.o \
+  cnfgator.o       unitool.o
+
+
+all: gsdllib.a
+
+GSDLLIBOBJECTS = $(OBJECTS)
+
+gsdllib.a: $(GSDLLIBOBJECTS)
+	rm -f gsdllib.a
+	$(AR) cru gsdllib.a $(GSDLLIBOBJECTS)
+	$(RANLIB) gsdllib.a
+
+clean:
+	rm -f $(OBJECTS) gsdllib.a
+
+distclean: clean
+	rm -f Makefile
+install:
+
+depend:
+	makedepend -Y -- $(DEFS) $(INCLUDES) $(CCFLAGS) -- $(SOURCES)
+
+
+
+
Index: /other-projects/trunk/greenorg/lib/cfgread.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/cfgread.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cfgread.cpp	(revision 14149)
@@ -0,0 +1,183 @@
+/**********************************************************************
+ *
+ * cfgread.cpp -- 
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+#include "cfgread.h"
+#include <ctype.h> // for isspace()
+
+int write_ini_line (ofstream &fileout, const text_t &key, const text_t value) {
+  if (key.empty() || value.empty()) return -1;
+  outconvertclass text_t2ascii;
+  fileout << text_t2ascii << key << "=" << value << "\n";
+  return 0;
+}
+
+int read_ini_line (ifstream &filein, text_t &key, text_t &value) {
+  if (filein.eof()) return -1;
+
+  key.clear();
+  value.clear();
+  char c;
+  filein.get(c);
+
+  int foundeq = 0;
+  while (!filein.eof() && c != '\n') {
+    if (!foundeq && c == '=') {foundeq = 1; filein.get(c);}
+
+    if (foundeq) value.push_back(c);
+    else key.push_back(c);
+    filein.get(c);
+  }
+  if (key.empty()) return 0; // blank line maybe?
+  return 0;
+} 
+
+// write out line of values to cfgfile
+// does nothing fancy - make sure no values contain carriage returns
+int write_cfg_line (ofstream &fileout, const text_tarray &values) {
+  outconvertclass text_t2ascii;
+
+  text_tarray::const_iterator here = values.begin();
+  text_tarray::const_iterator end = values.end();
+
+  bool first = true;
+  while (here != end) {
+    if (first) fileout << text_t2ascii << *here;
+    else fileout << text_t2ascii << "  \"" << *here << "\"";
+    first = false;
+    here ++;
+  }
+  fileout << "\n";
+  return 0;
+}
+
+// same, but use a file descriptor this time
+int write_cfg_line (int fileout, const text_tarray &values) {
+  outconvertclass text_t2ascii;
+
+  text_tarray::const_iterator here = values.begin();
+  text_tarray::const_iterator end = values.end();
+
+  if (here != end) {
+    char *s=here->getcstr();
+    write(fileout,s ,here->size());
+    delete s;
+
+    ++here;
+  }
+  while (here != end) {
+    write(fileout, " \"", 2);
+    char *s=here->getcstr();
+    write(fileout,s ,here->size());
+    delete s;
+    write(fileout, "\"", 1);
+
+    ++here;
+  }
+  write(fileout,"\n",1);
+  return 0;
+}
+
+
+// returns 0 on success, -1 on failure
+int read_cfg_line (ifstream &filein, text_tarray &values) {
+  // we split up the line into tokens, pushing each token into the
+  // values array. Quoted phrases are a single token. A "\" at the end
+  // of a line continues onto the next line.
+
+  values.erase(values.begin(), values.end());
+
+  if (!filein.good()) return -1;
+
+  text_t curvalue;
+  char c;
+  filein.get(c);
+
+  // skip white space
+  while (!filein.eof() && isspace(c)) { filein.get(c); }
+
+    // ignore comments
+  while (c == '#') {
+    while (!filein.eof() && c!='\n' && c!='\r') { filein.get(c); }
+    // skip white space...
+    while (!filein.eof() && isspace(c)) { filein.get(c); }
+  }
+
+  // deal with all the records on this line (possibly multi-line)
+  while (!filein.eof()) {
+    if (c=='\n' || c=='\r') { // shouldn't happen?
+      break;
+    }
+
+    // get the next token
+    curvalue.clear();
+      
+      // see if this is a quoted phrase
+    if (c=='\'' || c=='\"') { // starts with a quote
+      char quote, old_c;
+      quote = c;
+      old_c = c;
+      filein.get(c);
+      while (!filein.eof() && (c != quote || old_c == '\\') ) {
+	/* Turn eol into space, in case other parsing bits expect eol to
+	   also mean end of parsing... */
+	if (c=='\r' || c=='\n') c=' ';
+	curvalue.push_back(c);
+	old_c = c;
+	filein.get(c);
+      }
+      // get the character after the closing quote...
+      filein.get(c);
+    } else { // it's not a quoted phrase
+      // get the token
+      while (!filein.eof() && !isspace(c)) {
+	curvalue.push_back(c);
+	filein.get(c);
+      }
+    }
+    // we now have a token or a phrase
+    
+    // see if we've reached the end of the line
+    if (c == '\n' || c == '\r') {
+      if (curvalue != "\\") { // the line DOESN'T continue. End of line.
+	values.push_back(curvalue);
+	break;
+      } else {
+	// swallow up the EOL chars
+	while (!filein.eof() && (c=='\r' || c=='\n')) filein.get(c);
+      }
+    } else { // no new line seen
+      values.push_back(curvalue);
+    }
+
+    curvalue.clear();
+
+    // remove whitespace (but not newline/CR chars) before next token
+    while (!filein.eof() && (c==' ' || c=='\t')) filein.get(c);
+
+  } // while(1)
+  
+
+  return 0;
+}
Index: /other-projects/trunk/greenorg/lib/cfgread.h
===================================================================
--- /other-projects/trunk/greenorg/lib/cfgread.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cfgread.h	(revision 14149)
@@ -0,0 +1,48 @@
+/**********************************************************************
+ *
+ * cfgread.h -- reads in configuration files
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef CFGREAD_H
+#define CFGREAD_H
+
+#include "gsdlconf.h"
+#include "text_t.h"
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <fstream.h>
+#else
+#  include <fstream>
+#endif
+
+// return 0 on success, -1 on failure
+int write_ini_line (ofstream &fileout, const text_t &key, const text_t value);
+int read_ini_line (ifstream &filein, text_t &key, text_t &value);
+int write_cfg_line (ofstream &fileout, const text_tarray &values);
+int write_cfg_line (int filedesc, const text_tarray &values);
+int read_cfg_line (ifstream &filein, text_tarray &values);
+
+#endif
Index: /other-projects/trunk/greenorg/lib/cnfgable.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/cnfgable.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cnfgable.cpp	(revision 14149)
@@ -0,0 +1,37 @@
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace/std/iostream>
+#  include <ospace/std/fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <iostream.h>
+#  include <fstream.h>
+#else
+#  include <iostream>
+#  include <fstream>
+#endif
+
+#include "cnfgable.h"
+#include "cfgread.h"
+
+bool configurable::read_configfile (text_t filename) {
+  // read in the build configuration file
+  text_t key;
+  text_tarray cfgline;
+  char *cstr = filename.getcstr();
+  ifstream confin (cstr);
+  delete cstr;
+
+  if (confin) {
+    while (read_cfg_line(confin, cfgline) >= 0) {
+      if (cfgline.size () >= 2) {
+	key = cfgline[0];
+	cfgline.erase(cfgline.begin());
+
+	// configure the collection server
+	this->configure (key, cfgline);
+      }
+    }
+    confin.close ();
+    return true;
+  }
+  return false;
+}
Index: /other-projects/trunk/greenorg/lib/cnfgable.h
===================================================================
--- /other-projects/trunk/greenorg/lib/cnfgable.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cnfgable.h	(revision 14149)
@@ -0,0 +1,16 @@
+#ifndef CONFIGURABLE_H
+#define CONFIGURABLE_H
+
+#include "text_t.h"
+
+class configurable {
+ public:
+  virtual void configure (const text_t &key, const text_tarray &cfgline) = 0;
+  virtual ~configurable () {}
+
+  bool read_configfile (text_t filename);
+ protected:
+  configurable() {}
+};
+
+#endif
Index: /other-projects/trunk/greenorg/lib/cnfgator.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/cnfgator.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cnfgator.cpp	(revision 14149)
@@ -0,0 +1,52 @@
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace/std/iostream>
+#  include <ospace/std/fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <iostream.h>
+#  include <fstream.h>
+#else
+#  include <iostream>
+#  include <fstream>
+#endif
+
+#include "cnfgator.h"
+
+configurator::configurator(configurable *configureobject) {
+  configureobjs.push_back(configureobject);
+}
+
+void configurator::add_configurable(configurable *configureobject) {
+  configureobjs.push_back(configureobject);
+}
+
+bool configurator::configure(text_t filename) {
+  // read in the build configuration file
+  text_t key;
+  text_tarray cfgline;
+  char *cstr = filename.getcstr();
+  ifstream confin (cstr);
+  delete cstr;
+
+  if (confin) {
+    while (read_cfg_line(confin, cfgline) >= 0) {
+      if (cfgline.size () >= 2) {
+	key = cfgline[0];
+	cfgline.erase(cfgline.begin());
+
+	// configure the configurables
+	configurable *configureObject;
+	vector<configurable *>::iterator configureIter = configureobjs.begin();
+
+	while (configureIter != configureobjs.end()) {
+	  configureObject = *configureIter;
+	  configureIter ++;
+    
+	  configureObject->configure (key, cfgline);
+	}
+      }
+    }
+    confin.close ();
+    return true;
+  }
+  return false;
+}
Index: /other-projects/trunk/greenorg/lib/cnfgator.h
===================================================================
--- /other-projects/trunk/greenorg/lib/cnfgator.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/cnfgator.h	(revision 14149)
@@ -0,0 +1,18 @@
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace/std/vector>
+#else
+#  include <vector>
+#endif
+
+#include "cfgread.h"
+#include "cnfgable.h"
+
+class configurator
+{ 
+ private:
+  vector<configurable *> configureobjs;
+ public:
+  configurator(configurable *configureobject);
+  bool configure(text_t filename);
+  void add_configurable(configurable *configureobject);
+};
Index: /other-projects/trunk/greenorg/lib/display.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/display.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/display.cpp	(revision 14149)
@@ -0,0 +1,1756 @@
+/**********************************************************************
+ *
+ * display.cpp -- Context sensitive macro language
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ *
+ *********************************************************************/
+
+/*
+   $Log$
+   Revision 1.1  2003/09/12 04:52:19  sjboddie
+   *** empty log message ***
+
+   Revision 1.26  2002/02/26 23:01:31  jrm21
+   istream.get(char&) caused funny problems with gcc3 so they've been replaced
+   with char=istream.get() instead.
+
+   Revision 1.25  2002/02/12 22:46:47  jrm21
+   Allow nested _If_ macros. We now count '(' and ')' characters, so you can now
+   do _If_(_foo_, _If_(_bar_,FOOBAR,FOONOBAR), _If_(_bar_,NOFOOBAR,NOFOONOBAR) )
+   inside a macro file. If you want to display a bracket, you can escape it.
+   Previously we had assumed that a ',' marked the end of a toplevel argument.
+
+   Revision 1.24  2001/01/25 18:26:44  cs025
+   Included CORBA branch for first time
+
+   Revision 1.17.2.1  2000/04/04 15:02:28  cs025
+   Corba first commit
+
+   Revision 1.17  2000/02/29 21:00:38  sjboddie
+   fixed some compiler warnings
+
+   Revision 1.16  1999/11/25 21:53:08  sjboddie
+   fixed bug in logout
+
+   Revision 1.15  1999/09/24 02:25:35  rjmcnab
+   removed limitation on the number of arguments that a macro can have
+
+   Revision 1.14  1999/09/07 04:57:41  sjboddie
+   added gpl notice
+
+   Revision 1.13  1999/08/31 07:59:11  rjmcnab
+   Generalised spaces to unicode spaces, added ability to automatically detect
+   whether the input file is Unicode or UTF-8 and read the file in the
+   appropriate way, and improved the error messages slightly.
+
+   Revision 1.12  1999/07/21 20:46:12  rjmcnab
+   fixed small bug
+
+   Revision 1.11  1999/07/21 07:26:30  rjmcnab
+   Added more operators to _If_, changed quoting of parameters so that
+   ' can be used to quote but it is removed, and made slight optimisation
+   so that macros that don't contain other macros aren't expanded.
+
+   Revision 1.10  1999/03/01 20:39:54  sjboddie
+
+   Added eq and ne functionality to _If_
+
+   Revision 1.9  1999/03/01 01:18:09  sjboddie
+
+   Fixed bug in _If_ when value being tested was only one character
+   long (e.g. "0" or "1")
+
+   Revision 1.8  1999/02/28 23:15:29  rjmcnab
+
+   Made _If_ recognise 'false' and '0' as being false.
+
+   Revision 1.7  1999/02/08 01:26:11  rjmcnab
+
+   Improved the error reporting.
+
+   Revision 1.6  1999/01/19 08:30:23  rjmcnab
+
+   Added a method to determine whether a macro has been defined.
+
+   Revision 1.5  1999/01/19 01:38:12  rjmcnab
+
+   Made the source more portable.
+
+   Revision 1.4  1999/01/12 01:50:57  rjmcnab
+
+   Standard header.
+
+   Revision 1.3  1999/01/08 02:33:13  rjmcnab
+
+   Added standard header to source files.
+
+ */
+#include "display.h"
+#include "gsdlunicode.h"
+#include "unitool.h"
+#include <assert.h>
+
+// include to get NULL
+#include <stdlib.h>
+
+
+
+/////////////////////////////////////
+// misc classes
+/////////////////////////////////////
+
+
+// precedencetype defines a 'precedence value' for each parameter
+typedef map<text_t, double, lttext_t> precedencetype;
+
+
+// macro value structure
+struct mvalue
+{
+  text_t filename;
+  text_t value;
+};
+
+inline bool operator==(const mvalue &x, const mvalue &y) {
+  return (x.filename==y.filename && x.value==y.value);
+}
+
+inline bool operator<(const mvalue &x, const mvalue &y) {
+  return (x.filename<y.filename ||
+	  (x.filename==y.filename && x.filename<y.filename));
+}
+
+
+
+/////////////////////////////////////
+// stuff for defaultmacros_t
+/////////////////////////////////////
+  
+typedef map<text_t, mvalue, lttext_t> defparammap;
+typedef map<text_t, defparammap, lttext_t> defmacromap;
+typedef map<text_t, defmacromap, lttext_t> defpackagemap;
+
+// all methods in defaultmacros_t assume the parameters
+// and packages in a standard form and not empty
+class defaultmacros_t
+{
+protected:
+  defpackagemap macros;
+
+public:
+  typedef defpackagemap::const_iterator const_package_iterator;
+  typedef defpackagemap::size_type package_size_type;
+
+  // setmacro returns 0 if there was no error,
+  //            -1 if it redefined a macro
+  //            -2 if it hid a Global macro
+  //            -3 if it redefined a macro and hid a Global macro
+  //            -4 if either a package, macroname, or params were not supplied
+  int setmacro(const text_t &package,
+	  const text_t &macroname, 
+	  const text_t &params, 
+	  const text_t &filename, 
+	  const text_t &macrovalue);
+
+  void delmacro(const text_t &package,
+	      const text_t &macroname, 
+	      const text_t &params);
+
+  void clear () {macros.erase(macros.begin(), macros.end());}
+
+  // top level stuff
+  const_package_iterator package_begin () const {return macros.begin();}
+  const_package_iterator package_end () const {return macros.end();}
+  bool package_empty () const {return macros.empty();}
+  package_size_type package_size() const {return macros.size();}
+
+  // methods to find things
+  defmacromap *package_find (const text_t &packagename);
+  defparammap *macro_find (const text_t &packagename, 
+			   const text_t &macroname);
+  mvalue *parameter_find (const text_t &packagename, 
+			  const text_t &macroname,
+			  const text_t &parametername);
+};
+
+
+// setmacro returns 0 if there was no error,
+//            -1 if it redefined a macro
+//            -2 if it hid a Global macro
+//            -3 if it redefined a macro and hid a Global macro
+//            -4 if either a package, macroname, or params were not supplied
+int defaultmacros_t::setmacro(const text_t &package,
+			 const text_t &macroname, 
+			 const text_t &params, 
+			 const text_t &filename, 
+			 const text_t &macrovalue)
+{
+  paramhashtype paramhash;
+
+  defmacromap *macromapptr;
+  defparammap *parammapptr;
+  mvalue *mvalueptr;
+
+  int warning = 0;
+
+  // check to see if we would be hiding a Global macro with the 
+  // same name. Note: it doesn't matter what parameters are used
+  // a Global macro will still be hid by a non-Global one with
+  // the same name.
+  if ((package != "Global") && 
+      (macro_find ("Global", macroname) != NULL))
+    {
+      warning -= 2; // found the macroname
+    }
+
+  // define this macro
+  macromapptr = &(macros[package]); // -- package
+  parammapptr = &((*macromapptr)[macroname]); // -- macro name
+  // -- parameters
+  if ((*parammapptr).find(params) != (*parammapptr).end()) {
+    warning -= 1; // found the parameters
+  }
+  mvalueptr = &((*parammapptr)[params]);
+
+  // -- value
+  (*mvalueptr).filename = filename;
+  (*mvalueptr).value = macrovalue;
+
+  return warning;
+}
+
+void defaultmacros_t::delmacro(const text_t &package,
+			     const text_t &macroname, 
+			     const text_t &params)
+{
+  // make sure everything was supplied
+  if (package.empty() || macroname.empty() || params.empty()) return;
+
+  // find the package and macroname
+  defparammap *parammapptr = macro_find(package, macroname);
+  if (parammapptr == NULL) return;
+
+  // find the parameters
+  defparammap::iterator parammapit = parammapptr->find(params);
+  if (parammapit == parammapptr->end()) return;
+
+  // finally delete this element
+  parammapptr->erase(parammapit);
+}
+
+defmacromap *defaultmacros_t::package_find (const text_t &packagename)
+{
+  if (packagename.empty()) return NULL;
+
+  defpackagemap::iterator it = macros.find(packagename);
+  if (it == macros.end()) return NULL;
+
+  return &((*it).second);
+}
+
+defparammap *defaultmacros_t::macro_find (const text_t &packagename, 
+					       const text_t &macroname)
+{
+  defmacromap *macromapptr = package_find(packagename);
+  if (macromapptr == NULL || macroname.empty()) return NULL;
+
+  defmacromap::iterator it = (*macromapptr).find(macroname);
+  if (it == (*macromapptr).end()) return NULL;
+
+  return &((*it).second);
+}
+
+mvalue *defaultmacros_t::parameter_find (const text_t &packagename, 
+					 const text_t &macroname,
+					 const text_t &parametername)
+{
+  defparammap *parammapptr = macro_find(packagename, macroname);
+  if (parammapptr == NULL || parametername.empty()) return NULL;
+
+  defparammap::iterator it = (*parammapptr).find(parametername);
+  if (it == (*parammapptr).end()) return NULL;
+
+  return &((*it).second);
+}
+
+
+
+/////////////////////////////////////
+// stuff for currentmacros_t
+/////////////////////////////////////
+
+typedef map<text_t, mvalue, lttext_t> curmacromap;
+typedef map<text_t, curmacromap, lttext_t> curpackagemap;
+
+// all methods in currentmacros_t assume the parameters
+// and packages in a standard form and not empty
+class currentmacros_t 
+{
+protected:
+  curpackagemap macros;
+
+public:
+  typedef curpackagemap::const_iterator const_package_iterator;
+  typedef curpackagemap::size_type package_size_type;
+
+  // setmacro returns 0 if there was no error,
+  //            -1 if it redefined a macro
+  //            -4 if either a package, or macroname were not supplied
+  int setmacro(const text_t &package,
+	  const text_t &macroname, 
+	  const text_t &filename, 
+	  const text_t &macrovalue);
+
+  void delmacro(const text_t &package,
+		const text_t &macroname);
+
+  void clear () {macros.erase(macros.begin(), macros.end());}
+
+  // top level stuff
+  const_package_iterator package_begin () const {return macros.begin();}
+  const_package_iterator package_end () const {return macros.end();}
+  bool package_empty () const {return macros.empty();}
+  package_size_type package_size() const {return macros.size();}
+
+  // methods to find things
+  curmacromap *package_find (const text_t &packagename);
+  mvalue *macro_find (const text_t &packagename, 
+		      const text_t &macroname);
+};
+
+
+// setmacro returns 0 if there was no error,
+//            -1 if it redefined a macro
+//            -4 if either a package, or macroname were not supplied
+int currentmacros_t::setmacro(const text_t &package,
+			 const text_t &macroname, 
+			 const text_t &filename, 
+			 const text_t &macrovalue)
+{
+  int warning = 0;
+
+  // make sure everything was supplied
+  if (package.empty() || macroname.empty()) return -4;
+
+  // define this macro
+  curmacromap *macromapptr = &(macros[package]);
+  if ((*macromapptr).find(macroname) != (*macromapptr).end()) 
+    {
+      warning -= 1; // found the macroname
+    }
+  mvalue *mvalueptr = &((*macromapptr)[macroname]);
+
+  // -- value
+  (*mvalueptr).filename = filename;
+  (*mvalueptr).value = macrovalue;
+
+  return warning;
+}
+
+void currentmacros_t::delmacro(const text_t &package,
+			     const text_t &macroname)
+{
+  // make sure everything was supplied
+  if (package.empty() || macroname.empty()) return;
+
+  // find the package
+  curmacromap *macromapptr = package_find(package);
+  if (macromapptr == NULL) return;
+
+  // find the macroname
+  curmacromap::iterator macromapit = macromapptr->find(macroname);
+  if (macromapit == macromapptr->end()) return;
+
+  // finally delete this element
+  macromapptr->erase(macromapit);
+}
+
+curmacromap *currentmacros_t::package_find (const text_t &packagename)
+{
+  if (packagename.empty()) return NULL;
+
+  curpackagemap::iterator it = macros.find(packagename);
+  if (it == macros.end()) return NULL;
+
+  return &((*it).second);
+}
+
+mvalue *currentmacros_t::macro_find (const text_t &packagename, 
+				     const text_t &macroname)
+{
+  curmacromap *macromapptr = package_find(packagename);
+  if (macromapptr == NULL || macroname.empty()) return NULL;
+
+  curmacromap::iterator it = (*macromapptr).find(macroname);
+  if (it == (*macromapptr).end()) return NULL;
+
+  return &((*it).second);
+}
+
+
+
+
+/////////////////////////////////////
+// support functions
+/////////////////////////////////////
+
+// this calculation of precedence will make one occurance of a high
+// precedence item override many occurances of lower precedence items
+void calcprecedence (const text_t &precedstr, precedencetype &precedhash) 
+{
+  text_t param;
+  double multiple = 5.0;
+  double nextprec = multiple;
+
+  text_t::const_iterator here, end;
+
+  // set precedhash to an empty hash
+  precedhash.erase(precedhash.begin(), precedhash.end());
+
+  // iterate through paramstring ignoring space and extracting
+  // out key value pairs.
+  here = precedstr.begin();
+  end = precedstr.end();
+  while (here != end) 
+    {
+      // get the next parameter
+      param.clear(); // set param to an empty string
+      
+      while (here != end) 
+	{
+	  if (*here == ',') 
+	    {
+	      // found the end of the parameter
+	      here++;
+	      break;
+	    } 
+	  else if (*here == ' ') 
+	    {
+	      // do nothing (ignore spaces)
+	    } 
+	  else 
+	    {
+	      // character in parameter
+	      param.push_back (*here); // copy this character
+	    }
+	  
+	  here++;
+	}
+
+      // if a parameter was found insert its value
+      if (!param.empty()) 
+	{
+	  precedhash[param] = nextprec;
+	  nextprec *= multiple;
+	}
+    }
+}
+
+
+// decides how specific any given parameter is to the page parameters. Returns 
+// negative if any options are different or else the sum of the precedence for
+// the options which match. 
+double getspecificness(const paramhashtype &pageparams, 
+		       const paramhashtype &theseparams, 
+		       const precedencetype &precedhash) 
+{
+  double specificness = 0.0;
+  paramhashtype::const_iterator here, pagevalueit;
+  precedencetype::const_iterator precedit;
+  text_t thesekey, thesevalue, constignore("ignore");
+  
+  here = theseparams.begin();
+  while (here != theseparams.end()) 
+    {
+      thesekey = (*here).first;
+      thesevalue = (*here).second;
+      
+      if (thesekey == constignore) 
+	{
+	  // do nothing, this is a placeholder
+	} 
+      else 
+	{
+	  pagevalueit = pageparams.find(thesekey);
+	  if ((pagevalueit != pageparams.end()) && 
+	      ((*pagevalueit).second == thesevalue)) 
+	    {
+	      // this parameter fits, add its precedence value
+	      precedit = precedhash.find(thesekey);
+	      if (precedit == precedhash.end()) 
+		specificness += 1.0; // no precedence defined
+	      else 
+		  specificness += (*precedit).second;
+	    }
+	  else 
+	    {
+	      return -1.0; // did not match
+	    }
+	}
+
+      here++;
+    }
+  
+  return specificness;
+}
+
+
+void splitparams (const text_t &paramstring, paramhashtype &paramhash)
+{
+  text_t key;
+  text_t value;
+
+  text_t::const_iterator here, end;
+
+  // set paramhash to an empty hash
+  paramhash.erase(paramhash.begin(), paramhash.end());
+
+  // iterate through paramstring ignoring space and extracting
+  // out key value pairs.
+  here = paramstring.begin();
+  end  = paramstring.end();
+  while (here != end) 
+    {
+      // reset key and value
+      key.clear();
+      value.clear();
+
+      // get key
+      while (here != end) 
+	{
+	  if (*here == ',') 
+	    {
+	      // have a key with no value
+	      break;
+	    } 
+	  else if (*here == '=') 
+	    {
+	      // found the end of the key
+	      here ++; 
+	      break;
+	    } 
+	  else if (*here == ' ') 
+	    {
+	      // do nothing (ignore spaces)
+	    } 
+	  else 
+	    {
+	      // character in key
+	      key.push_back (*here); // copy this character
+	    }
+	  here ++;
+	}
+
+      // get value
+      while (here != end) 
+	{
+	  if (*here == '=') 
+	    {
+	      // multiple values for one key, ignore previous
+	      // values
+	      value.clear();
+	    } 
+	  else if (*here == ',') 
+	    {
+	      // found the end of the value
+	      here ++;
+	      break;
+	    } 
+	  else if (*here == ' ') 
+	    {
+	      // do nothing (ignore spaces)
+	    } 
+	  else 
+	    {
+	      // character in value
+	      value.push_back (*here); // copy this character
+	    }
+	  here ++;
+	}
+    
+      // if a key was found insert the key/value pair in 
+      // the map 
+      if (!key.empty()) 
+	{
+	  paramhash[key] = value;
+	}
+    }
+}
+
+
+void joinparams (const paramhashtype &paramhash, text_t &paramstring)
+{
+  //set paramstring to an empty string
+  paramstring.clear();
+
+  //iterate through the paramhash
+  paramhashtype::const_iterator thepair;
+  int firstparam = 1;
+
+  for (thepair=paramhash.begin();thepair!=paramhash.end(); thepair++)
+    {
+      if (!firstparam) paramstring.push_back(',');
+      firstparam = 0;
+      
+      // insert pairs of "key=value"
+      text_t thevalue;
+      paramstring.append((*thepair).first);
+      paramstring.push_back('=');
+      paramstring.append((*thepair).second);
+    }
+}
+
+
+
+/////////////////////////////////////
+// parsing support functions
+/////////////////////////////////////
+
+inline int my_isalpha (unsigned short c) 
+{
+  return ((c >= 'A' && c <= 'Z') ||
+	  (c >= 'a' && c <= 'z'));
+} 
+
+
+
+inline unsigned short my_ttnextchar (text_t::const_iterator &here, 
+				     text_t::const_iterator &end) 
+{
+  if (here != end) 
+    {
+      here++;
+      if (here != end) return (*here);
+    }
+  return '\0';
+}
+
+
+
+/////////////////////////////////////
+// methods for display
+/////////////////////////////////////
+
+// public methods for display
+
+displayclass::displayclass ()
+{
+  defaultmacros = new defaultmacros_t;
+  defaultfiles = new fileinfomap;
+  
+  orderparamlist = new paramspeclist;
+  currentmacros = new currentmacros_t;
+
+  outc = NULL;
+
+  logout = &cerr;
+}
+
+
+displayclass::~displayclass ()
+{
+  delete defaultmacros;
+  delete defaultfiles;
+  
+  delete orderparamlist;
+  delete currentmacros;
+}
+  
+// setdefaultmacro adds an entry to the list of default macros 
+// returns 0 if there was no error,
+//        -1 if it redefined a macro
+//        -2 if it hid a Global macro
+//        -3 if it redefined a macro and hid a Global macro
+//        -4 if no macroname was supplied
+int displayclass::setdefaultmacro (text_t package, const text_t &macroname, 
+			      text_t params, const text_t &macrovalue) 
+{
+  return setdefaultmacro (macroname, package, params, macrovalue, "memory");
+}
+
+
+
+// as we are using one character lookahead the
+// value of line might be off by one.
+// the input file must be in the utf-8 or unicode format
+// initially for each file isunicode should be set to 0 and 
+// bigendian should be set to 1
+// 0 will be returned when the end of the file has been found
+unsigned short my_uni_get (/*unistream*/ifstream &fin, int &line, 
+			   int &isunicode, int &bigendian) {
+  unsigned short c = 0;
+  
+  if (isunicode) {
+    // unicode text
+    // get the next two characters
+    unsigned char c1 = 0, c2 = 0;
+    
+    if (!fin.eof()) c1=fin.get();
+    if (!fin.eof()) c2=fin.get();
+    else c1 = 0;
+
+    // if they indicate the order get the next character
+    // otherwise just get these characters
+    if (c1 == 0xff && c2 == 0xfe) {
+      bigendian = 0;
+      c = my_uni_get (fin, line, isunicode, bigendian);
+    } else if (c1 == 0xfe && c2 == 0xff) {
+      bigendian = 1;
+      c = my_uni_get (fin, line, isunicode, bigendian);
+    } else c = (bigendian) ? (c1*256+c2) : (c2*256+c1);
+    
+  } else {
+    // utf-8 text
+    // how many characters we get depends on what we find
+    unsigned char c1 = 0, c2 = 0, c3 = 0;
+    while (!fin.eof()) {
+      c1=fin.get();
+      if (c1 == 0xfe || c1 == 0xff) {
+	// switch to unicode
+	isunicode = 1;
+	if (!fin.eof()) c2=fin.get();
+
+	if (c1 == 0xff && c2 == 0xfe) bigendian = 0;
+	else bigendian = 1;
+
+	c = my_uni_get (fin, line, isunicode, bigendian);
+	break;
+
+      } else if (c1 <= 0x7f) {
+	// one byte character
+	c = c1;
+	break;
+
+      } else if (c1 >= 0xc0 && c1 <= 0xdf) {
+	// two byte character
+	if (!fin.eof()) c2=fin.get();
+	c = ((c1 & 0x1f) << 6) + (c2 & 0x3f);
+	break;
+
+      } else if (c1 >= 0xe0 && c1 <= 0xef) {
+	// three byte character
+	if (!fin.eof()) c2=fin.get();
+	if (!fin.eof()) c3=fin.get();
+	c = ((c1 & 0xf) << 12) + ((c2 & 0x3f) << 6) + (c3 & 0x3f);
+	break;
+      }
+
+      // if we get here there was an error in the file, we should
+      // be able to recover from it however, maybe the file is in
+      // another encoding
+    }
+  }
+
+  if (c == '\n') line++;
+  return c;
+}
+
+
+
+// loads a default macro file (if it isn't already loaded)
+// returns 0 if didn't need to load the file (it was already loaded)
+//         1 if was (re)loaded
+//        -1 an error occurred while trying to load the file
+int displayclass::loaddefaultmacros (text_t thisfilename) {
+  // convert the filename to a C string
+  char *filenamestr = thisfilename.getcstr();
+  outconvertclass text_t2ascii;
+
+  // see if we need to open this file -- this isn't implemented yet
+  
+  // open the file
+  //  unistream fin (filenamestr);
+  ifstream fin (filenamestr);
+
+  if (fin.fail()) return -1; // read failed
+
+  text_t package = "Global";
+  int line = 1;
+  int isunicode = 0, bigendian = 1;
+
+  // pre-fetch the next character
+  unsigned short c = my_uni_get(fin, line, isunicode, bigendian);
+
+  text_t macropackage, macroname, macroparameters, macrovalue;
+  int err; // for keeping track of whether an error occurred somewhere
+
+  while (!fin.eof()) {
+    // expect: white space, comment, "package", or macroname
+    if (is_unicode_space(c)) {
+      // found some white-space
+      c = my_uni_get(fin, line, isunicode, bigendian);
+
+    } else if (c == '#') {
+      // found the start of a comment
+      // skip all characters up to the end of the line
+      c = my_uni_get(fin, line, isunicode, bigendian); // skip the '#'
+      while (!fin.eof ()) {
+	if (c == '\n') break;
+	c = my_uni_get(fin, line, isunicode, bigendian);
+      }
+
+    } else if (c == 'p') {
+      // found the start of 'package' (hopefully)
+      // get everything up to the next space
+      text_t tmp;
+      while (!fin.eof() && my_isalpha(c)) {
+	tmp.push_back(c);
+	c = my_uni_get(fin, line, isunicode, bigendian);
+      }
+      // see if we have a package name
+      if (tmp == "package") {
+	// skip all white space
+	while (!fin.eof() && is_unicode_space(c)) 
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	
+	// get the package name
+	tmp.clear(); // init tmp
+	while (!fin.eof() && my_isalpha(c)) {
+	  tmp.push_back(c);
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	}
+	package = tmp;
+	if (package.empty()) package = "Global";
+
+      } else {
+	// error
+	if (logout != NULL) {
+	  (*logout) << text_t2ascii << "Expected 'package' on line " << line 
+		    << " of " << thisfilename << "\n";
+	}
+      }
+      
+    } else if (c == '_') {
+      // found the start of a macro (hopefully)
+      c = my_uni_get(fin, line, isunicode, bigendian); // skip the _
+
+      // init variables
+      err = 0;
+      macropackage = package;
+      macroname.clear(); // init macroname
+      macroparameters.clear(); // init macroname
+      macrovalue.clear(); // init macroname
+      
+      // get the macro name
+      while ((!fin.eof()) && (!is_unicode_space(c)) && 
+	     (c != '\\') && (c != '_') &&(c != ':') && 
+	     (macroname.size() < 80)) {
+	macroname.push_back(c);
+	c = my_uni_get(fin, line, isunicode, bigendian);
+      }
+	  
+      if (c == ':') {
+	// we actually had the macro package
+	c = my_uni_get(fin, line, isunicode, bigendian); // skip :
+	macropackage = macroname;
+	macroname.clear ();
+	
+	// get the macro name (honest!)
+	while ((!fin.eof()) && (!is_unicode_space(c)) && 
+	       (c != '\\') && (c != '_') &&(c != ':') && 
+	       (macroname.size() < 80)) {
+	  macroname.push_back(c);
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	}
+      }
+      
+      if (!err && c == '_') {
+	c = my_uni_get(fin, line, isunicode, bigendian); // skip the _
+	
+	// skip all white space
+	while (!fin.eof() && is_unicode_space(c)) c = my_uni_get(fin, line, isunicode, bigendian);
+      } else if (!err) err = 1;
+
+      // get the macro parameters (optional)
+      if (!err && c == '[') {
+	c = my_uni_get(fin, line, isunicode, bigendian); // skip the [
+	while ((!fin.eof()) && (c != '\n') && (c != '\\') && (c != ']')) {
+	  macroparameters.push_back(c);
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	}
+	
+	if (c == ']') {
+	  c = my_uni_get(fin, line, isunicode, bigendian); // skip the ]
+	  
+	  // skip all white space
+	  while (!fin.eof() && is_unicode_space(c)) c = my_uni_get(fin, line, isunicode, bigendian);
+	} 
+	else if (!err) err = 2;
+      }
+
+      // get the macro value
+      if (!err && c == '{') {
+	c = my_uni_get(fin, line, isunicode, bigendian); // skip the {
+	while ((!fin.eof()) && (c != '}')) {
+	  if (c == '\\') {
+	    macrovalue.push_back(c); // keep the '\'
+	    c = my_uni_get(fin, line, isunicode, bigendian); // store the *next* value regardless
+	    if (!fin.eof()) macrovalue.push_back(c);
+	    c = my_uni_get(fin, line, isunicode, bigendian);
+	  }
+	  macrovalue.push_back(c);
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	}
+	
+	if (c == '}') {
+	  c = my_uni_get(fin, line, isunicode, bigendian); // skip the }
+	  
+	  // define the macro
+	  err = setdefaultmacro (macropackage, macroname, macroparameters,
+				 thisfilename, macrovalue);
+	  if ((err == -1 || err == -3) && logout != NULL) {
+	    (*logout) << text_t2ascii << "Warning: redefinition of _" << 
+	      package << ":" << macroname << "_[" << macroparameters <<
+	      "] on line ";
+	    (*logout) << line;
+	    (*logout) << text_t2ascii << " of " << thisfilename << "\n";
+	    
+	  } else if (err == -2 && logout != NULL) {
+	    // I don't think we really want this warning since it's a very
+	    // common occurance - Stefan.
+
+	    //	    (*logout) << text_t2ascii << "Warning: _" << 
+	    //	      package << ":" << macroname << "_[" << macroparameters <<
+	    //	      "] on line ";
+	    //	    (*logout) << line;
+	    //	    (*logout) << text_t2ascii << " of " << 
+	    //	      thisfilename << " hides a Global macro with the same name\n";
+
+	  } else if (err == -4 && logout != NULL) {
+	    (*logout) << text_t2ascii << "Error: macro name expected on line ";
+	    (*logout) << line ;
+	    (*logout) << text_t2ascii << " of " << thisfilename << "\n";
+	  }		  
+	  
+	  err = 0; // for the test below
+	}
+	else if (!err) err = 3;
+      }
+      else if (!err) err = 4;
+      
+      if (err) {
+	// found an error, skip to the end of the line
+	if (logout != NULL) {
+	  (*logout) << text_t2ascii << "Error: ";
+	  if (err == 1) (*logout) << text_t2ascii << "'_'";
+	  else if (err == 2) (*logout) << text_t2ascii << "']'";
+	  else if (err == 3) (*logout) << text_t2ascii << "'}'";
+	  else if (err == 4) (*logout) << text_t2ascii << "'{'";
+	  (*logout) << text_t2ascii << " expected on line ";
+	  (*logout) << line ;
+	  (*logout) << text_t2ascii << " of " << thisfilename << "\n";
+	}
+	while (!fin.eof ()) {
+	  if (c == '\n') break;
+	  c = my_uni_get(fin, line, isunicode, bigendian);
+	}
+      }
+      
+    } else {
+      // found an error, skip to the end of the line
+      if (logout != NULL) {
+	(*logout) << text_t2ascii << "Error: Unexpected input on line " << line 
+		  << " of " << thisfilename << "\n";
+      }
+      while (!fin.eof ()) {
+	if (c == '\n') break;
+	c = my_uni_get(fin, line, isunicode, bigendian);
+      }
+      
+    }
+  }
+  
+  fin.close ();
+  
+  // free up memory
+  delete filenamestr;
+  return 0;
+}
+
+
+// prepares to create a page.
+void displayclass::openpage (const text_t &thispageparams, 
+			const text_t &thisprecedence)
+{
+  // init variables
+  currentmacros->clear();
+
+  // reload any default macro files which have changed.
+  if (checkdefaultmacrofiles() < 0) 
+    {
+      // print error message
+    }
+
+  setpageparams (thispageparams, thisprecedence);
+}
+
+
+// changes the parameters for the current page.
+void displayclass::setpageparams (text_t thispageparams, 
+			     text_t thisprecedence)
+{
+  paramhashtype thissplitparams, splittheseparams;
+  precedencetype precedhash;
+  text_tset::iterator text_tsetit;
+  paramspec tmpps;
+
+  precedence = thisprecedence;
+  calcprecedence(thisprecedence, precedhash);
+
+  splitparams(thispageparams, thissplitparams);
+  joinparams(thissplitparams, thispageparams);
+  params = thispageparams;
+
+  // get a list of parameters with their specificness
+  orderparamlist->erase(orderparamlist->begin(), orderparamlist->end());
+  for (text_tsetit=allparams.begin();
+       text_tsetit!=allparams.end();
+       text_tsetit++) 
+    {
+      tmpps.param = (*text_tsetit);
+      splitparams(tmpps.param, splittheseparams);
+      tmpps.spec = getspecificness(thissplitparams, splittheseparams, precedhash);
+      if (tmpps.spec >= 0) 
+	{
+	  orderparamlist->push_back (tmpps);
+	}
+    }
+
+  // sort the list
+  sort(orderparamlist->begin(), orderparamlist->end());
+
+//   paramspeclist::iterator pshere = orderparamlist->begin();
+//   paramspeclist::iterator psend = orderparamlist->end();
+//   while (pshere != psend) 
+//     {
+//       cerr << text_t2ascii << "param=" << (*pshere).param;
+//       cerr << " spec=" << (int)((*pshere).spec) << "\n";
+//       pshere++;
+//     }
+}
+
+
+// overrides (or sets) a macro for the current page.
+// returns 0 if there was no error,
+//        -1 if it redefined a macro
+//        -4 if no macroname was supplied
+int displayclass::setmacro (const text_t &macroname, 
+		       text_t package, 
+		       const text_t &macrovalue)
+{
+  // make sure a macroname was supplied
+  if (macroname.empty()) return -4;
+
+  // make package "Global" if it doesn't point to anything yet
+  if (package.empty()) package = "Global";
+
+  // set the macro
+  return currentmacros->setmacro(package, macroname, "memory", macrovalue);
+}
+
+
+void displayclass::expandstring (const text_t &inputtext, text_t &outputtext)
+{
+  expandstring("", inputtext, outputtext);
+}
+
+
+void displayclass::expandstring (text_t package, const text_t &inputtext,
+				 text_t &outputtext, int recursiondepth)
+{
+  text_t macroname, macropackage, macroargs;
+  text_t::const_iterator tthere = inputtext.begin();
+  text_t::const_iterator ttend = inputtext.end();
+  unsigned short c = '\0';
+  int openbrackets=0;
+
+  if (package.empty()) package = "Global";
+
+  outputtext.clear();
+  // use one-character lookahead
+  if (tthere != ttend) c = (*tthere);
+  while (tthere != ttend) 
+    {
+      if (c == '\\')
+	{
+	  // found an escape character
+	  c = my_ttnextchar (tthere, ttend); // skip the escape character
+	  if (tthere != ttend) 
+	    {
+	      if (c == 'n') outputtext.push_back('\n');
+	      else if (c == 't') outputtext.push_back('\t');
+	      else outputtext.push_back(c);
+	    }
+	  c = my_ttnextchar (tthere, ttend);
+	  
+	} 
+      else if (c == '_') 
+	{
+	  // might have found the start of a macro
+      
+	  // embedded macros (macros within the names
+	  // of other macros) are no longer supported -- Rodger.
+      
+	  // save the current state (in case we need to back out)
+	  text_t::const_iterator savedtthere = tthere;
+	  unsigned short savedc = c;
+	  
+	  macroname.clear();
+	  macropackage = package;
+	  macroargs.clear();
+      
+	  c = my_ttnextchar (tthere, ttend); // skip the '_'
+	  
+	  // get the macroname
+	  while (tthere != ttend && (!is_unicode_space(c)) && 
+		 (c != '\\') && (c != '_') &&(c != ':') && 
+		 (macroname.size() < 80)) 
+	    {
+	      macroname.push_back((unsigned char)c);
+	      c = my_ttnextchar (tthere, ttend);
+	    }
+      
+	  if (c == ':') 
+	    {
+	      // we actually had the macro package
+	      c = my_ttnextchar (tthere, ttend);
+	      macropackage = macroname;
+	      macroname.clear ();
+	
+	      // get the macro name (honest!)
+	      while ((tthere != ttend) && (!is_unicode_space(c)) && 
+		     (c != '\\') && (c != '_') &&(c != ':') && 
+		     (macroname.size() < 80)) 
+		{
+		  macroname.push_back((unsigned char)c);
+		  c = my_ttnextchar (tthere, ttend);
+		}
+	    }
+      
+	  if ((tthere != ttend) && (c == '_') &&
+	      (macroname.size() > 0)) 
+	    {
+	      // found a macro!!!! (maybe)
+	      c = my_ttnextchar (tthere, ttend); // skip the '_'
+	
+	      // get the parameters (if there are any)
+	      if ((tthere != ttend) && (c == '(')) 
+		{
+		  c = my_ttnextchar (tthere, ttend); // skip '('
+	  	  openbrackets++;
+		  // have to be careful of quotes
+		  unsigned short quote = '\0';
+		  while (tthere != ttend) 
+		    {
+		      if (c == '\\') 
+			{
+			  // have an escape character, save escape 
+			  // character and next character as well
+			  macroargs.push_back (c);
+			  c = my_ttnextchar (tthere, ttend); 
+	      
+			} 
+		      else if (quote == '\0') 
+			{
+			  // not in a quote at the moment
+			  if (c == '(')
+			    {
+			      openbrackets++;
+////			      macroargs.push_back (c);
+////			      c = my_ttnextchar (tthere, ttend); 
+			    }
+			  else if (c == ')') 
+			    {
+			      openbrackets--;
+			      if (openbrackets==0) {
+				// found end of the arguments
+				c = my_ttnextchar (tthere, ttend); // skip ')'
+				break;
+			      } else {
+				// nested brackets
+			        macroargs.push_back (c);
+			        c = my_ttnextchar (tthere, ttend); 
+			      }
+			    } 
+			  else if (c == '\'' || c == '\"') 
+			    {
+			      // found a quote
+			      quote = c;
+			    }
+	      
+			} 
+		      else 
+			{
+			  // we are in a quote
+			  if (c == quote) quote = '\0';
+			}
+	    
+		      // save this character
+		      if (tthere != ttend) macroargs.push_back (c);
+		      c = my_ttnextchar (tthere, ttend);
+		    } // while (tthere != ttend)
+		}
+	
+	      //
+	      // we now have the macropackage, macroname, and macroargs
+	      //
+	
+	      // try to expand out this macro
+	      text_t expandedmacro;
+	      if (macro (macroname, macropackage, macroargs, expandedmacro, recursiondepth)) 
+		{
+		  // append the expanded macro
+		  outputtext += expandedmacro;
+		} 
+	      else
+		{
+		  // wasn't a macro
+		  tthere = savedtthere;
+		  c = savedc;
+		  outputtext.push_back(c); // the '_'
+		  c = my_ttnextchar (tthere, ttend);
+		}
+	
+
+	    }
+	  else
+	    {
+	      // wasn't a macro
+	      tthere = savedtthere;
+	      c = savedc;
+	      outputtext.push_back(c); // the '_'
+	      c = my_ttnextchar (tthere, ttend);
+	    }
+
+	}
+      else 
+	{
+	  // nothing of interest
+	  outputtext.push_back(c); // the '_'
+	  c = my_ttnextchar (tthere, ttend);
+	}
+    } // end of while (tthere != ttend)
+}
+
+ostream *displayclass::setlogout (ostream *thelogout) {
+
+  ostream *oldlogout = logout;
+  logout = thelogout;
+  return oldlogout;
+}
+
+// protected methods for display
+
+// reloads any default macro files which have changed
+// returns 0 no errors occurred
+//        -1 an error occurred while trying to load one of the files
+int displayclass::checkdefaultmacrofiles ()
+{
+  // this isn't implemented yet
+  return 0;
+}
+
+// isdefaultmacro sees if there is an entry in the list of
+// default macros with the given package and macro name
+// returns 0 if no macros in the package or in the global package
+//           were found
+//         1 if no macros in the package were found but a macro
+//           in the global package was found
+//         2 if a macro in the given package was found
+int displayclass::isdefaultmacro (text_t package, const text_t &macroname) {
+  // make sure a macroname was supplied
+  if (macroname.empty()) return 0;
+
+  // make package "Global" if it doesn't point to anything yet
+  if (package.empty()) package = "Global";
+
+  // check the given package
+  if (defaultmacros->macro_find(package, macroname) != NULL) return 2;
+
+  // check the Global package
+  if (defaultmacros->macro_find("Global", macroname) != NULL) return 1;
+
+  return 0;
+}
+
+
+// setdefaultmacro adds an entry to the list of default macros 
+// returns 0 if there was no error,
+//        -1 if it redefined a macro
+//        -2 if it hid a Global macro
+//        -3 if it redefined a macro and hid a Global macro
+//        -4 if no macroname was supplied
+int displayclass::setdefaultmacro (text_t package, const text_t &macroname, 
+			      text_t params, const text_t &filename,
+			      const text_t &macrovalue) 
+{
+  // make sure a macroname was supplied
+  if (macroname.empty()) return -4;
+
+  // put the parameters in a standard form
+  paramhashtype paramhash;
+  if (params.empty()) params = "ignore=yes";
+  splitparams (params, paramhash);
+  joinparams (paramhash, params);
+
+  // make package "Global" if it doesn't point to anything yet
+  if (package.empty()) package = "Global";
+
+  // remember these parameters
+  allparams.insert (params);
+
+  // remember this filename (this part isn't finished yet -- Rodger).
+
+  // set the macro
+  return defaultmacros->setmacro(package, macroname, params, filename, macrovalue);
+}
+
+
+// evaluates a boolean expression
+// returns false if expr equals "" or "0". 
+// otherwise returns true *unless* expr is 
+// format "XXXX" eq/ne "dddd" in which case
+// the two quoted strings are compared
+bool displayclass::boolexpr (text_t package, const text_t &expr, int recursiondepth) {
+
+  if (expr.empty()) return false;
+
+  text_t expexpr;
+  if (package.empty()) package = "Global";  
+  expandstring (package, expr, expexpr, recursiondepth);
+
+  if (expexpr.empty() || expexpr == "0") return false;
+  if (expr[0] != '\"') return true;
+
+  // don't use expexpr while separating quoted parts of
+  // expression just in case expanded out macros contain
+  // quotes
+  text_t::const_iterator here = expr.begin();
+  text_t::const_iterator end = expr.end();
+
+  int quotecount = 0;
+  text_t string1, expstring1;
+  text_t string2, expstring2;
+  text_t op;
+  text_t combineop;
+  bool result = false; // an empty string is false
+  bool result2 = false;
+
+  while (here != end) {
+    // get a comparison
+    quotecount = 0;
+    string1.clear();
+    string2.clear();
+    op.clear();
+    while (here != end) {
+      if (*here == '"') quotecount++;
+      else if (quotecount == 1) string1.push_back(*here);
+      else if ((quotecount == 2) && !is_unicode_space (*here))
+	op.push_back(*here);
+      else if (quotecount == 3) string2.push_back(*here);
+      else if (quotecount >= 4) break;
+      here ++;
+    }
+    
+    expandstring (package, string1, expstring1, recursiondepth);
+    expandstring (package, string2, expstring2, recursiondepth);
+
+    // get next result
+    result2 = true; // any badly formatted string will return true
+    if (op == "eq") result2 = (expstring1 == expstring2);
+    else if (op == "ne") result2 = (expstring1 != expstring2);
+    else if (op == "gt") result2 = (expstring1 > expstring2);
+    else if (op == "ge") result2 = (expstring1 >= expstring2);
+    else if (op == "lt") result2 = (expstring1 < expstring2);
+    else if (op == "le") result2 = (expstring1 <= expstring2);
+    else if (op == "==") result2 = (expstring1.getint() == expstring2.getint());
+    else if (op == "!=") result2 = (expstring1.getint() != expstring2.getint());
+    else if (op == ">") result2 = (expstring1.getint() > expstring2.getint());
+    else if (op == ">=") result2 = (expstring1.getint() >= expstring2.getint());
+    else if (op == "<") result2 = (expstring1.getint() < expstring2.getint());
+    else if (op == "<=") result2 = (expstring1.getint() <= expstring2.getint());
+
+    // combine the results
+    if (combineop == "&&") result = (result && result2);
+    else if (combineop == "||") result = (result || result2);
+    else result = result2;
+
+    // get next combination operator
+    combineop.clear();
+    while (here != end && *here != '"') {
+      if (!is_unicode_space(*here)) combineop.push_back(*here);
+      here++;
+    }
+  }
+
+  return result;
+}
+
+
+// (recursively) expand out a macro
+// returns true  if the macro was found
+//         false if the macro was not found
+bool displayclass::macro (const text_t &macroname, text_t macropackage, 
+		     const text_t &macroparam, text_t &outputtext,
+		     int recursiondepth)
+{
+  outconvertclass text_t2ascii;
+  text_tlist splitmacroparam;
+  text_t::const_iterator hereit, endit;
+  text_t aparam;
+  unsigned short c = '\0', quote = '\0';
+
+  //  cerr << "r: " << recursiondepth << "\n";
+  // check for deep recursion
+  if (recursiondepth >= MAXRECURSIONDEPTH)
+    {
+      if (logout != NULL)
+	(*logout) << "Warning: deep recursion, limiting macro expansion\n";
+      return false;
+    }
+
+  // check the macropackage
+  if (macropackage.empty()) macropackage = "Global";
+
+  // get the parameters (but don't expand them)
+  if (macroparam.size() > 0) {
+    // set up for loop
+    hereit = macroparam.begin();
+    endit = macroparam.end();
+    if (hereit != endit) c = (*hereit);
+    int openbrackets=0; // keep track of bracket level eg _If_(1, _macro_(arg))
+			// this allows commas inside brackets (as arguments)
+    while (hereit != endit) {
+      // get the next parameter
+      aparam.clear();
+      quote = '\0'; // not-quoted unless proven quoted
+      
+      // ignore initial whitespace
+      while ((hereit!=endit)&&is_unicode_space(c)) c=my_ttnextchar(hereit,endit);
+      
+      // look for the end of the parameter
+      while (hereit != endit) {
+	if (c == '\\') {
+	  // found escape character, also get next character
+	  aparam.push_back(c);
+	  c = my_ttnextchar (hereit, endit);
+	  if (hereit != endit) aparam.push_back(c);
+	  
+	} else if (quote=='\0' && (c=='\'' /*|| c=='"'*/)) {
+	  // found a quoted section
+	  quote = c;
+	  if (openbrackets>0) aparam.push_back(c);
+
+	} else if (quote!='\0' && c==quote) {
+	  // found the end of a quote
+	  quote = '\0';
+	  if (openbrackets<0) aparam.push_back(c);
+
+	} else if (quote=='\0' && (c==',' || c==')') && openbrackets==0) {
+	  // found the end of a parameter
+	  c = my_ttnextchar (hereit, endit);
+	  break;
+
+	} else if (c=='(') {
+	  aparam.push_back(c);
+	  openbrackets++;
+	} else if (c==')') {
+	  openbrackets--;
+	  aparam.push_back(c);
+	} else {
+	  // ordinary character
+	  aparam.push_back(c);
+	}
+
+	c = my_ttnextchar (hereit, endit);
+      }
+
+
+      // add this parameter to the list
+      splitmacroparam.push_back(aparam);
+    }
+  }
+
+  if (macroname == "If") {
+    // get the condition, then clause and else clause
+    text_tlist::iterator paramcond = splitmacroparam.begin();
+    text_tlist::iterator paramend = splitmacroparam.end();
+    text_tlist::iterator paramthen = paramend;
+    text_tlist::iterator paramelse = paramend;
+    
+    if (paramcond != paramend) {
+      paramthen = paramcond;
+      paramthen++;
+    }
+    if (paramthen != paramend) {
+      paramelse = paramthen;
+      paramelse++;
+    }
+    
+    // will always output something
+    outputtext.clear();
+
+
+    // expand out the first parameter
+    if (paramcond != paramend) {
+      /// text_t tmpoutput;
+      /// expandstring (macropackage, *paramcond, tmpoutput, recursiondepth+1);
+      /// lc (tmpoutput);
+      // test the expanded string
+      if (boolexpr (macropackage, *paramcond, recursiondepth+1)) {
+	//(tmpoutput.size()) && (tmpoutput != "false") && (tmpoutput != "0")) {
+	// true
+	if (paramthen != paramend)
+	  expandstring (macropackage, *paramthen, outputtext, recursiondepth+1);
+      } else {
+	// false
+	if (paramelse != paramend)
+	  expandstring (macropackage, *paramelse, outputtext, recursiondepth+1);
+      }
+    }
+    
+    return true;
+  }
+
+  // try and find this macro
+
+  // this list might be replaced by something a little more
+  // sophisticated in the future.
+  text_tlist packagelist;
+  packagelist.push_back (macropackage);
+  packagelist.push_back ("Global");
+
+  paramspeclist::iterator paramhere, paramend;
+  text_tlist::iterator packagehere = packagelist.begin();
+  text_tlist::iterator packageend = packagelist.end();
+  mvalue *macrovalue = NULL;
+  while ((macrovalue == NULL) && (packagehere != packageend)) 
+    {
+      // first look in the currentmacros
+      macrovalue = currentmacros->macro_find(*packagehere, macroname);
+      if (macrovalue == NULL)
+	macrovalue = currentmacros->macro_find("Style", macroname);
+
+      // look in the default macros
+      if (macrovalue == NULL) 
+	{
+	  // next look in the defaultmacros
+	  if (defaultmacros->macro_find (*packagehere, macroname) != NULL)
+	    {
+	      paramhere = orderparamlist->begin(); paramend = orderparamlist->end();
+	      while ((macrovalue == NULL) && (paramhere != paramend))
+		{
+// 		  cerr << text_t2ascii << "\npackage: " << *packagehere << "\n";
+// 		  cerr << text_t2ascii << "macroname: " << macroname << "\n";
+// 		  cerr << text_t2ascii << "param: " << (*paramhere).param << "\n";
+// 		  cerr << "spec: " << (int)((*paramhere).spec) << "\n";
+		  macrovalue = defaultmacros->parameter_find(*packagehere, macroname,
+							     (*paramhere).param);
+		  paramhere++;
+		}
+	    }
+	}
+
+      // and again in the package "Style"
+      if (macrovalue == NULL) 
+	{
+	  // next look in the defaultmacros
+	  if (defaultmacros->macro_find ("Style", macroname) != NULL)
+	    {
+	      paramhere = orderparamlist->begin(); paramend = orderparamlist->end();
+	      while ((macrovalue == NULL) && (paramhere != paramend))
+		{
+		  macrovalue = defaultmacros->parameter_find("Style", macroname,
+							     (*paramhere).param);
+		  paramhere++;
+		}
+	    }
+	}
+      if (macrovalue == NULL) packagehere++;
+    }
+
+  if (macrovalue != NULL)
+    {
+      // we found a macro
+
+      // replace all the option macros (_1_, _2_, ...) in the value of this macro
+      // and decide if we need to expand the value of this macro
+      bool needsexpansion = false;
+      text_t tempmacrovalue;
+      tempmacrovalue.clear();
+      hereit = macrovalue->value.begin();
+      endit = macrovalue->value.end();
+      if (hereit != endit) c = (*hereit);
+      while (hereit != endit)
+	{
+	  if (c == '\\')
+	    {
+	      // found an escape character
+	      needsexpansion = true;
+	      tempmacrovalue.push_back(c);
+	      c = my_ttnextchar (hereit, endit);
+	      if (hereit != endit) tempmacrovalue.push_back(c);
+	      c = my_ttnextchar (hereit, endit);
+	    }
+	  else if (c == '_')
+	    {
+	      text_t::const_iterator savedhereit = hereit;
+
+	      // attempt to get a number
+	      int argnum = 0;
+	      unsigned short digc = my_ttnextchar (hereit, endit);
+	      while (digc >= '0' && digc <= '9') {
+		argnum = argnum*10 + digc - '0';
+		digc = my_ttnextchar (hereit, endit);
+	      }
+	      if (digc == '_' && argnum > 0) {
+		// found an option macro, append the appropriate text
+		text_tlist::iterator ttlisthere = splitmacroparam.begin();
+		text_tlist::iterator ttlistend = splitmacroparam.end();
+		while ((argnum > 1) && (ttlisthere != ttlistend)) {
+		  argnum--;
+		  ttlisthere++;
+		}
+		if (ttlisthere != ttlistend) {
+		  tempmacrovalue.append(*ttlisthere);
+		  if (findchar((*ttlisthere).begin(), (*ttlisthere).end(), '_') != (*ttlisthere).end())
+		    needsexpansion = true;
+		}
+
+		c = my_ttnextchar (hereit, endit);
+
+	      } else {
+		// wasn't a option macro
+		needsexpansion = true;
+		tempmacrovalue.push_back(c);
+		hereit = savedhereit;
+		c = my_ttnextchar (hereit, endit);
+	      }
+	    }
+	  else
+	    {
+	      tempmacrovalue.push_back(c);
+	      c = my_ttnextchar (hereit, endit);
+	    }
+	}
+      
+      // recursively replace this macro (if we need to)
+      if (needsexpansion) {
+	expandstring (*packagehere, tempmacrovalue, outputtext, recursiondepth+1);
+      } else {
+	outputtext += tempmacrovalue;
+      }
+
+      return true;
+    }
+
+  // GRB: deal with remaining code properly as it faults
+  return false;
+
+  if (logout != NULL) {
+    (*logout) << text_t2ascii << "Warning: _" << 
+      macropackage << ":" << macroname << "_ not found\n";
+  }
+  
+  return false; // didn't find the macro
+}
+
+
+void displayclass::printdefaultmacros ()
+{
+  defpackagemap::const_iterator packagemapit;
+  defmacromap::const_iterator macromapit;
+  defparammap::const_iterator parammapit;
+  const mvalue *mvalueptr;
+  outconvertclass text_t2ascii;
+
+  text_t packagename, macroname, macroparam;
+  
+  for (packagemapit = defaultmacros->package_begin();
+       packagemapit != defaultmacros->package_end();
+       packagemapit++) 
+    {
+      packagename = (*packagemapit).first;
+      //     cerr << "***package   : \"" << packagename << "\"\n";
+    
+      for (macromapit = (*packagemapit).second.begin();
+	   macromapit != (*packagemapit).second.end();
+	   macromapit++) 
+	{
+	  macroname = (*macromapit).first;
+	  //       cerr << "***macroname : \"" << macroname << "\"\n";
+
+	  for (parammapit = (*macromapit).second.begin();
+	       parammapit != (*macromapit).second.end();
+	       parammapit++) 
+	    {
+	      macroparam = (*parammapit).first;
+	      mvalueptr = &((*parammapit).second);
+	      cerr << text_t2ascii << "package   : \"" << packagename << "\"\n";
+	      cerr << text_t2ascii << "macroname : \"" << macroname << "\"\n";
+	      cerr << text_t2ascii << "parameters: [" << macroparam << "]\n";
+	      cerr << text_t2ascii << "filename  : \"" << mvalueptr->filename << "\"\n";
+	      cerr << text_t2ascii << "value     : {" << mvalueptr->value << "}\n\n";
+	    }
+	}
+    }
+}
+
+void displayclass::printallparams ()
+{
+  text_tset::iterator text_tsetit;
+  outconvertclass text_t2ascii;
+
+  cerr << text_t2ascii << "** allparams\n";
+  for (text_tsetit=allparams.begin();
+       text_tsetit!=allparams.end();
+       text_tsetit++) {
+    cerr << text_t2ascii << (*text_tsetit) << "\n";
+  }
+  cerr << text_t2ascii << "\n";
+}
+
+
+
+/////////////////////////////////////
+// stuff to do tricky output
+/////////////////////////////////////
+
+displayclass &operator<< (outconvertclass &theoutc, displayclass &display)
+{
+  display.setconvertclass (&theoutc);
+  return display;
+}
+
+displayclass &operator<< (displayclass &display, const text_t &t)
+{
+  outconvertclass *theoutc = display.getconvertclass();
+
+  if (theoutc == NULL) return display;
+  
+  text_t output;
+  display.expandstring (t, output);
+  (*theoutc) << output;
+
+  return display;
+}
Index: /other-projects/trunk/greenorg/lib/display.h
===================================================================
--- /other-projects/trunk/greenorg/lib/display.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/display.h	(revision 14149)
@@ -0,0 +1,266 @@
+/**********************************************************************
+ *
+ * display.h -- Context sensitive macro language
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef DISPLAY_H
+#define DISPLAY_H
+
+#include "gsdlconf.h"
+#include "text_t.h"
+
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\vector>
+#  include <ospace\std\list>
+#  include <ospace\std\set>
+#  include <ospace\std\map>
+#  include <ospace\std\algorithm>
+#elif defined(GSDL_USE_STL_H)
+#  include <vector.h>
+#  include <list.h>
+#  include <set.h>
+#  include <map.h>
+#  if defined(GSDL_USE_ALGO_H)
+#    include <algo.h>
+#  else
+#    include <algorithm.h>
+#  endif
+#else
+#  include <vector>
+#  include <list>
+#  include <set>
+#  include <map>
+#  include <algorithm>
+#endif
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\iostream>
+#  include <ospace\std\fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <iostream.h>
+#  include <fstream.h>
+
+#define unistream ifstream
+#else
+#  include <iostream>
+#  include <fstream>
+
+typedef std::basic_ifstream<unsigned char> unistream;
+
+#endif
+
+
+// use the standard namespace
+#if defined(GSDL_USE_OBJECTSPACE)
+using namespace ospace::std;
+#elif !defined(GSDL_NAMESPACE_BROKEN)
+using namespace std;
+#endif
+
+
+
+// MAXRECURSIONDEPTH is a cutoff to catch
+// cyclic macros (a includes b and b includes a)
+#define MAXRECURSIONDEPTH 30
+
+// class prototypes
+class defaultmacros_t;
+class currentmacros_t;
+
+// a few supporting types
+// fileelement isn't finished yet, I have to find out
+// more about getting information about files
+struct fileinfoelement 
+{
+  int otherinfo;
+};
+
+inline bool operator==(const fileinfoelement &x, const fileinfoelement &y) {
+  return (x.otherinfo==y.otherinfo);
+}
+
+inline bool operator<(const fileinfoelement &x, const fileinfoelement &y) {
+  return (x.otherinfo<y.otherinfo);
+}
+
+typedef map<text_t, fileinfoelement, lttext_t> fileinfomap;
+
+
+typedef map<text_t, text_t, lttext_t> paramhashtype;
+
+
+struct paramspec 
+{
+  double spec;
+  text_t param;
+};
+
+inline bool operator==(const paramspec& x, const paramspec& y) 
+{
+  return ((x.spec == y.spec) && (x.param == y.param));
+}
+
+inline bool operator!=(const paramspec& x, const paramspec& y) 
+{
+  return ((x.spec != y.spec) || (x.param != y.param));
+}
+
+// note: paramspec is sorted by reverse spec and then param
+
+inline bool operator<(const paramspec& x, const paramspec& y) 
+{
+  return ((x.spec > y.spec) ||
+	  ((x.spec == y.spec) && (x.param < y.param)));
+}
+
+inline bool operator>(const paramspec& x, const paramspec& y) 
+{
+  return ((x.spec < y.spec) ||
+	  ((x.spec == y.spec) && (x.param > y.param)));
+}
+
+typedef vector<paramspec> paramspeclist;
+
+
+// NOTE: when macros are used within text they should have
+// underscores '_' on both sides, however, in calls to
+// setdefaultmacro and setmacro they should not have the
+// underscores. So you might have
+//
+// setmacro ("aname", "query", " some text ");
+// expandstring ("_aname_", expandedtext);
+//
+// because the input to expandstring is a block of text, not
+// a macroname
+
+class displayclass 
+{
+public:
+  displayclass ();
+  ~displayclass ();
+  
+  // isdefaultmacro sees if there is an entry in the list of
+  // default macros with the given package and macro name
+  // returns 0 if no macros in the package or in the global package
+  //           were found
+  //         1 if no macros in the package were found but a macro
+  //           in the global package was found
+  //         2 if a macro in the given package was found
+  int isdefaultmacro (text_t package, const text_t &macroname);
+
+  // setdefaultmacro adds an entry to the list of default macros 
+  // returns 0 if there was no error,
+  //        -1 if it redefined a macro
+  //        -2 if it hid a Global macro
+  //        -3 if it redefined a macro and hid a Global macro
+  //        -4 if no macroname was supplied
+  int setdefaultmacro (text_t package, const text_t &macroname, 
+		       text_t params, const text_t &macrovalue);
+  
+  // loads a default macro file (if it isn't already loaded)
+  // returns 0 if didn't need to load the file (it was already loaded)
+  //         1 if was (re)loaded
+  //        -1 an error occurred while trying to load the file
+  int loaddefaultmacros (text_t thisfilename);
+  
+  // prepares to create a page: deletes all macros set with
+  // 'setmacro', checks all the default macro files to see
+  // if any need reloading, and sets the page parameters.
+  void openpage (const text_t &thispageparams, 
+		 const text_t &thisprecedence);
+  
+  // changes the parameters for the current page.
+  void setpageparams (text_t thispageparams, 
+		      text_t thisprecedence);
+  
+  // overrides (or sets) a macro for the current page.
+  // returns 0 if there was no error,
+  //        -1 if it redefined a macro
+  //        -4 if no macroname was supplied
+  int setmacro (const text_t &macroname, 
+		text_t package, 
+		const text_t &macrovalue);
+  
+  void expandstring (const text_t &inputtext, text_t &outputtext);
+  void expandstring (text_t package, const text_t &inputtext,
+		     text_t &outputtext, int recursiondepth = 0);
+
+  // these functions are not ment to be used directly, they are used to permit 
+  // concise stream output like:
+  // cout << text_t2ascii << display << "_amacro_" << "_anothermacro_";
+  void setconvertclass (outconvertclass *theoutc) {outc = theoutc;}
+  outconvertclass *getconvertclass () {return outc;}
+
+  // say where any error logging goes, this can be NULL
+  // if no error logging is desired - returns previous value
+  ostream *setlogout (ostream *thelogout);
+
+  // debug stuff
+  void printdefaultmacros ();
+  void printallparams ();
+
+protected:
+  // special variables to permit trickly output
+  outconvertclass *outc;
+
+  // general variables
+  text_tset allparams;  // possible parameter combinations
+  defaultmacros_t *defaultmacros;
+  fileinfomap *defaultfiles;
+  
+  // variables to do with a page expansion
+  text_t params;
+  text_t precedence;
+  paramspeclist *orderparamlist; // ordered by specificness
+  currentmacros_t *currentmacros; // only macros set by setmacro
+
+  // logging variable
+  ostream *logout;
+
+  // reloads any default macro files which have changed
+  // returns 0 no errors occurred
+  //        -1 an error occurred while trying to load one of the files
+  int checkdefaultmacrofiles ();
+
+  int setdefaultmacro (text_t package, const text_t &macroname, 
+		       text_t params, const text_t &filename,
+		       const text_t &macrovalue); 
+
+  // evaluates a boolean expression
+  bool boolexpr (text_t package, const text_t &expr, int recursiondepth);
+
+  // (recursively) expand out a macro
+  // returns true  if the macro was found
+  //         false if the macro was not found
+  bool macro (const text_t &macroname, text_t macropackage, 
+	      const text_t &macroparam, text_t &outputtext,
+	      int recursiondepth);
+};
+
+
+displayclass &operator<< (outconvertclass &theoutc, displayclass &display);
+displayclass &operator<< (displayclass &display, const text_t &t);
+
+#endif
Index: /other-projects/trunk/greenorg/lib/fileutil.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/fileutil.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/fileutil.cpp	(revision 14149)
@@ -0,0 +1,445 @@
+/**********************************************************************
+ *
+ * fileutil.cpp -- 
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+#include "fileutil.h"
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\iostream>
+#  include <ospace\std\fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <iostream.h>
+#  include <fstream.h>
+#else
+#  include <iostream>
+#  include <fstream>
+#endif
+
+
+// returns the proper concatenation of the two paths
+text_t filename_cat (text_t path1, text_t path2) {
+  text_t::iterator here;
+  text_t::iterator begin;
+  text_t::iterator end;
+
+  // make sure there is just one slash, of the correct type,
+  // at the end of path1 (unless path1 is an empty string).
+  if (!path1.empty()) {
+    // remove all trailing slashes
+    here = path1.end();
+    here--;
+    begin = path1.begin();
+    while (here != begin && (*here == '/' || *here == '\\')) {
+      here--;
+    }
+    here++;
+    path1.erase(here,path1.end());
+    
+    // add one final slash
+#ifdef __WIN32__
+    path1 += "\\";
+#else
+    path1 += "/";
+#endif 
+  }
+
+  // remove all slashes from the start of path2
+  here = path2.begin();
+  end = path2.end();
+  while (here != end && (*here == '/' || *here == '\\')) {
+    here++;
+  }
+  path2.erase (path2.begin(), here);
+  
+  text_t fullpath = path1 + path2;
+  
+  // make sure all the right slashes are used
+  here = fullpath.begin();
+  end = fullpath.end();
+  while (here != end) {
+#ifdef __WIN32__
+    if (*here == '/') *here = '\\';
+#else
+    if (*here == '\\') *here = '/';
+#endif
+    here ++;
+  }
+  return fullpath;
+}
+
+text_t filename_cat (text_t path1, text_t path2, text_t path3) {
+  return filename_cat(filename_cat(path1,path2),path3);
+}
+
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4) {
+  return filename_cat(filename_cat(filename_cat(path1,path2),path3),path4);
+}
+
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4, 
+		     text_t path5) {
+  return filename_cat(filename_cat(filename_cat(filename_cat(path1,path2),path3),
+				   path4),path5);
+}
+
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4, 
+		     text_t path5, text_t path6) {
+  return filename_cat(filename_cat(path1,path2,path3,path4,path5),path6);
+}
+
+// returns true if filename can be opened
+bool file_exists (const text_t &filename) {
+  char *cstr = filename.getcstr();
+#ifdef GSDL_USE_IOS_H
+  ifstream filestream (cstr, ios::in | ios::nocreate);
+#else
+  ifstream filestream (cstr, ios::in);
+#endif
+  delete cstr;
+  
+  if (filestream) {
+    // file exists
+    filestream.close ();
+    return true;
+  }
+  
+  // file does not exist
+  return false;
+}
+
+// returns true if filename can be opened
+bool file_writable (const text_t &filename) {
+  char *cstr = filename.getcstr();
+#ifdef GSDL_USE_IOS_H
+  ifstream filestream (cstr, ios::out | ios::nocreate);
+#else
+  ifstream filestream (cstr, ios::out);
+#endif
+  delete cstr;
+  
+  if (filestream) {
+    // file exists
+    filestream.close ();
+    return true;
+  }
+  
+  // file does not exist
+  return false;
+}
+
+#if defined(__WIN32__) && !defined(__GNUC__)
+
+#include <windows.h>
+
+bool directory_exists (const text_t &dirname) {
+  
+  WIN32_FIND_DATA FileData;  
+  HANDLE hSearch; 
+
+  text_t dir = dirname + "\\*";
+  char *dirpath = dir.getcstr();
+  
+  hSearch = FindFirstFile(dirpath, &FileData);
+  if (hSearch == INVALID_HANDLE_VALUE) {
+    delete dirpath;
+    return false;
+  }
+
+  FindClose (hSearch);
+  delete dirpath;
+  return true;
+}
+
+bool read_dir (const text_t &dirname, text_tset &filelist) {
+  
+  WIN32_FIND_DATA FileData;  
+  HANDLE hSearch; 
+  
+  text_t dir = dirname + "\\*";
+  char *dirpath = dir.getcstr();
+  
+  hSearch = FindFirstFile(dirpath, &FileData); 
+  if (hSearch == INVALID_HANDLE_VALUE) {
+    delete dirpath;
+    return false;
+  }
+  
+  text_t filename = FileData.cFileName;
+  if (filename != "." && filename != ".." && filename != "CVS")
+    filelist.insert (filename); 
+  
+  while (FindNextFile(hSearch, &FileData)) {
+    filename = FileData.cFileName;
+    if (filename == "." || filename == ".." || filename == "CVS")
+      continue;
+    filelist.insert (filename); 
+  }
+  
+  FindClose(hSearch);
+  delete dirpath;
+  
+  return true;
+}
+
+bool read_dir (const text_t &dirname, text_tarray &filelist) {
+  
+  WIN32_FIND_DATA FileData;  
+  HANDLE hSearch; 
+  
+  text_t dir = dirname + "\\*";
+  char *dirpath = dir.getcstr();
+  
+  hSearch = FindFirstFile(dirpath, &FileData); 
+  if (hSearch == INVALID_HANDLE_VALUE) {
+    delete dirpath;
+    return false;
+  }
+  
+  text_t filename = FileData.cFileName;
+  if (filename != "." && filename != ".." && filename != "CVS")
+    filelist.push_back (filename); 
+  
+  while (FindNextFile(hSearch, &FileData)) {
+    filename = FileData.cFileName;
+    if (filename == "." || filename == ".." || filename == "CVS")
+      continue;
+    filelist.push_back (filename); 
+  }
+  
+  FindClose(hSearch);
+  delete dirpath;
+
+  return true;
+}
+
+#else
+
+#include <dirent.h>
+
+bool directory_exists (const text_t &dirname) {
+  
+  char *tmp = dirname.getcstr();
+  DIR *dirin = opendir (tmp);
+  delete tmp;
+  
+  if (dirin == NULL) return false;
+  closedir (dirin);
+  return true;
+}
+
+bool read_dir (const text_t &dirname, text_tset &filelist) {
+  
+  char *tmp = dirname.getcstr();
+  DIR *dirin = opendir (tmp);
+  delete tmp;
+  
+  if (dirin == NULL) return false;
+  
+  dirent *dirp; 
+  
+  text_t filename;
+  while ((dirp = readdir (dirin)) != NULL) {
+    filename = dirp->d_name;
+    if (filename == "." || filename == ".." || filename == "CVS")
+      continue;
+    filelist.insert (filename);
+  }
+  closedir (dirin);
+  return true;
+}
+
+bool read_dir (const text_t &dirname, text_tarray &filelist) {
+  
+  char *tmp = dirname.getcstr();
+  DIR *dirin = opendir (tmp);
+  delete tmp;
+  
+  if (dirin == NULL) return false;
+  
+  dirent *dirp; 
+  
+  text_t filename;
+  while ((dirp = readdir (dirin)) != NULL) {
+    filename = dirp->d_name;
+    if (filename == "." || filename == ".." || filename == "CVS")
+      continue;
+    filelist.push_back (filename);
+  }
+  closedir (dirin);
+  return true;
+}
+
+#endif
+
+// returns true if things look like they happened ok
+bool file_copy (const text_t &fromfile, const text_t &tofile) {
+  
+  char *fromfilec = fromfile.getcstr();
+  char *tofilec = tofile.getcstr();
+  bool fail = false;
+
+#ifdef __WIN32__
+  if (CopyFile (fromfilec, tofilec, FALSE) == 0) fail = true;
+
+#else
+
+  ifstream from (fromfilec);
+  if (!from) {
+    fail = true;
+  } else {
+    ofstream to (tofilec);
+    if (!to) {
+      fail = true;
+      from.close();
+    } else {
+      from >> to.rdbuf();
+      from.close();
+      to.close();
+    }
+  }
+
+#endif
+
+  delete fromfilec;
+  delete tofilec;
+  if (fail) return false;
+  return true;
+}
+
+// This is a fairly quick and nasty attempt at doing a "tail" on a file
+// (i.e. returning the last numlines lines of filename).  It has one
+// important limitation in that it expects lines to be linelength
+// characters long on average.  This of course makes it possible that it
+// won't return numlines lines if there are some lines that are longer than
+// linelength.  It also makes it fairly inefficient as it always reads in
+// numlines*linelength characters when it most often doesn't need them all.
+// For current needs it's fine though.
+// -- Pass a linelength of 0 to use the default linelength (256 chars).
+// -- The maximum value of linelength is MAXLINELENGTH
+text_t file_tail (const text_t &filename, int numlines, int linelength) {
+
+#define MAXLINELENGTH 2048
+
+  if (numlines < 1) numlines = 1;
+  if (linelength < 1) linelength = 256;
+  if (linelength > MAXLINELENGTH) linelength = MAXLINELENGTH;
+
+  streampos numchars = linelength*numlines;
+
+  text_tarray lines;
+  text_t ret;
+
+  char *filenamec = filename.getcstr();
+  char linec[MAXLINELENGTH];
+  ifstream file_in (filenamec);
+  delete filenamec;
+  if (file_in) {
+    file_in.seekg (0, ios::end);
+    streampos file_length = file_in.tellg();
+    if (file_length < numchars) numchars = file_length;
+    file_in.seekg (-numchars, ios::end);
+
+    while (!file_in.eof()) {
+      file_in.getline (linec, linelength);
+      ret.setcstr(linec);
+      text_t::const_iterator here = ret.begin();
+      text_t::const_iterator end = ret.end();
+      // make sure line has content
+      while (here != end) {
+	if (*here != '\n' && *here != ' ') {
+	  lines.push_back (ret);
+	  break;
+	}
+	here ++;
+      }
+    }
+    file_in.close();
+  }
+
+  ret.clear();
+  int numlinesgot = lines.size();
+  int sindex = 0;
+  if (numlinesgot > numlines) sindex = numlinesgot - numlines;
+  for (int i = sindex; i < numlinesgot; i++) {
+    ret += lines[i] + "\n";
+  }
+
+  return ret;
+}
+
+#ifdef __WIN32__
+
+#include <direct.h>
+// returns true if directory was created successfully
+bool mk_dir (const text_t &dirname) {
+  char *dirnamec = dirname.getcstr();
+  int rv = _mkdir (dirnamec);
+  delete dirnamec;
+  if (rv == 0) return true;
+  return false;
+}
+
+#else
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+// returns true if directory was created successfully
+bool mk_dir (const text_t &dirname) {
+  mode_t mode = 0777;
+  char *dirnamec = dirname.getcstr();
+  int rv = mkdir (dirnamec, mode);
+  delete dirnamec;
+  if (rv == 0) return true;
+  return false;
+}
+
+#endif
+
+// read in file from filename and load into content
+bool read_file (const text_t &filename, text_t &content) {
+
+  content.clear();
+
+  char *filenamec = filename.getcstr();
+#ifdef GSDL_USE_IOS_H
+  ifstream file_in (filenamec, ios::in | ios::nocreate);
+#else
+  ifstream file_in (filenamec, ios::in);
+#endif
+  delete filenamec;
+
+  if (file_in) {
+    char c;
+    file_in.get(c);
+    while (!file_in.eof ()) {
+      content.push_back(c);
+      file_in.get(c);
+    }
+    file_in.close();
+  } else {
+    return false;
+  }
+  return true;
+}
Index: /other-projects/trunk/greenorg/lib/fileutil.h
===================================================================
--- /other-projects/trunk/greenorg/lib/fileutil.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/fileutil.h	(revision 14149)
@@ -0,0 +1,65 @@
+/**********************************************************************
+ *
+ * fileutil.h -- a few useful file utilities
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef FILEUTIL_H
+#define FILEUTIL_H
+
+#include "text_t.h"
+
+
+// returns the proper concatenation of the two paths
+text_t filename_cat (text_t path1, text_t path2);
+text_t filename_cat (text_t path1, text_t path2, text_t path3);
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4);
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4, 
+		     text_t path5);
+text_t filename_cat (text_t path1, text_t path2, text_t path3, text_t path4, 
+		     text_t path5, text_t path6);
+
+// returns true if filename can be opened
+bool file_exists (const text_t &filename);
+
+// returns true if filename can be written to
+bool file_writable (const text_t &filename);
+
+// returns true if directory exists
+bool directory_exists (const text_t &dirname);
+
+// note that read_dir appends to filelist, it doesn't clear
+// it first
+bool read_dir (const text_t &dirname, text_tarray &filelist);
+bool read_dir (const text_t &dirname, text_tset &filelist);
+
+bool file_copy (const text_t &fromfile, const text_t &tofile);
+
+text_t file_tail (const text_t &filename, int numlines, int linelength);
+
+// returns true if directory created successfully
+bool mk_dir (const text_t &dirname);
+
+bool read_file (const text_t &filename, text_t &content);
+
+#endif
Index: /other-projects/trunk/greenorg/lib/gsdlconf.h
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdlconf.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdlconf.h	(revision 14149)
@@ -0,0 +1,155 @@
+/**********************************************************************
+ *
+ * gsdlconf.h -- system specific includes
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef GSDLCONF_H
+#define GSDLCONF_H
+
+#define GSDL_VERSION "x.xx"
+
+#if defined(__WIN32__) && !defined(__CYGWIN__)
+#include "../win32cfg.h"
+#else
+#include "../config.h"
+#endif
+
+// Note: all macros used in the gsdl software (except the _H macros) should
+// now start with GSDL_
+
+// GSDL_NEED_STRINGS_H should be defined if some string functions
+// needed (like strcasecmp) are in strings.h
+#if defined(__IBMCPP__)
+#  define GSDL_NEED_STRINGS_H
+#endif
+
+// GSDL_USE_IOS_H should be defined if the .h extension needs to
+// be used for the io stream headers
+#if (defined(__GNUG__)  && __GNUG__ + 0 < 3) || defined(__IBMCPP__)
+#  define GSDL_USE_IOS_H 1
+#endif
+
+// GSDL_USE_STL_H should be defined if the .h extension needs to
+// be used for the stl header files
+#if defined(__IBMCPP__)
+#  define GSDL_USE_STL_H 1
+#endif
+
+// GSDL_USE_ALGO_H should be defined if algo.h should be used 
+// instead of algorithm.h
+#if defined(__IBMCPP__)
+#  define GSDL_USE_ALGO_H 1
+#endif
+
+// GSDL_NAMESPACE_BROKEN should be defined if namespaces should
+// not be used
+#if (defined(__GNUG__)  && __GNUG__ + 0 < 3) || defined(__IBMCPP__)
+#  define GSDL_NAMESPACE_BROKEN 1
+#endif
+
+// GSDL_USE_OBJECTSPACE should now be used instead of USE_OBJECTSPACE
+#if defined(USE_OBJECTSPACE)
+#  define GSDL_USE_OBJECTSPACE
+#endif
+
+// GSDL_NEED_DESTROY_USHORT should be defined if the compiler needs
+// a definition for void destroy(short unsigned int *)
+#if defined(__IBMCPP__)
+# define GSDL_NEED_DESTROY_USHORT
+#endif
+
+// mktemp
+
+#if !defined(__WIN32__) || defined(__GNUC__)
+#include <unistd.h>
+#define GSDL_MKTEMP(str) mktemp(str)
+#else
+#include <io.h>
+#define GSDL_MKTEMP(str) _mktemp(str)
+#endif
+
+
+
+// file locking
+
+#if defined(__WIN32__)
+
+#if !defined(LK_UNLOCK) && defined(LK_UNLCK)
+#define LK_UNLOCK LK_UNLCK
+#endif
+
+#include <io.h>
+#include <sys/locking.h>
+
+#define GSDL_UNLOCK_FILE(fd) _locking(fd, LK_UNLCK, 200)
+#define GSDL_LOCK_FILE(fd) lock_val = _locking(fd, LK_NBLCK, 200)
+
+#else     /* not WIN32 */
+
+#if GSDL_USE_FLOCK
+#include <sys/lock.h>
+
+#ifndef LOCK_SH
+#define LOCK_SH	1
+#endif
+
+#ifndef LOCK_EX
+#define LOCK_EX	2
+#endif
+
+#ifndef LOCK_NB
+#define LOCK_NB 4
+#endif
+
+#ifndef LOCK_UN
+#define LOCK_UN 8
+#endif
+
+#define GSDL_UNLOCK_FILE(fd) flock (fd, LOCK_UN)
+#define GSDL_LOCK_FILE(fd) lock_val = flock (fd, LOCK_EX + LOCK_NB)
+
+#else  /* ! GSDL_USE_FLOCK */
+// use fcntl
+#include <fcntl.h>
+#define GSDL_UNLOCK_FILE(fd) \
+	{					\
+	  struct flock flock;			\
+	  flock.l_type = F_UNLCK;		\
+	  flock.l_whence = SEEK_SET;		\
+	  flock.l_start = flock.l_len = 0L;	\
+	  fcntl (fd, F_SETLK, &flock);	\
+	}
+#define GSDL_LOCK_FILE(fd) \
+	{					\
+	  struct flock flock;			\
+	  flock.l_type = F_WRLCK;		\
+	  flock.l_whence = SEEK_SET;			\
+	  flock.l_start = flock.l_len = 0L;	\
+	  lock_val = fcntl (fd, F_SETLK, &flock);	\
+	}
+
+#endif
+#endif
+
+#endif
Index: /other-projects/trunk/greenorg/lib/gsdltimes.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdltimes.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdltimes.cpp	(revision 14149)
@@ -0,0 +1,163 @@
+/**********************************************************************
+ *
+ * gsdltimes.cpp -- functions to deal with time
+ * Copyright (C) 1999  DigiLib Systems Limited, New Zealand
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+#include "gsdltimes.h"
+
+// returns a string of the form "YYYY/MM/DD hh:mm:ss" (expressed in
+// Coordinated Universal Time (UTC))
+// returns "" if an error occurs
+// !! Actually, we now return a string in localtime, as text2time returns
+//    a time in localtime (mktime assumes local timezone). - jrm21 Sep 2002
+text_t time2text (time_t time) {
+  // tm *tm_ptr = gmtime(&time);
+  tm *tm_ptr = localtime(&time);
+
+  if (tm_ptr == NULL) return "";
+
+  // year
+  text_t timestr(tm_ptr->tm_year+1900);
+  timestr.push_back('/');
+
+  // month (note the +1)
+  if ((tm_ptr->tm_mon+1) < 10) timestr.push_back('0');
+  timestr += (tm_ptr->tm_mon+1);
+  timestr.push_back('/');
+
+  // day
+  if (tm_ptr->tm_mday < 10) timestr.push_back('0');
+  timestr += tm_ptr->tm_mday;
+  timestr.push_back(' ');
+
+  // hour
+  if (tm_ptr->tm_hour < 10) timestr.push_back('0');
+  timestr += tm_ptr->tm_hour;
+  timestr.push_back(':');
+
+  // minutes
+  if (tm_ptr->tm_min < 10) timestr.push_back('0');
+  timestr += tm_ptr->tm_min;
+  timestr.push_back(':');
+
+  // seconds
+  if (tm_ptr->tm_sec < 10) timestr.push_back('0');
+  timestr += tm_ptr->tm_sec;
+
+  return timestr;
+}
+
+// takes a string like that returned by time2text and returns corresponding time_t
+// returns -1 if an error occurs
+time_t text2time (const text_t &timestr) {
+  tm timetm;
+  text_t tempstr;
+  
+  text_t::const_iterator time_here = timestr.begin();
+  text_t::const_iterator time_end = timestr.end();
+
+  // year
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, '/', tempstr);
+  timetm.tm_year = tempstr.getint() - 1900;
+  if (timetm.tm_year < 0) return (time_t) -1;
+
+  // month (note the -1)
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, '/', tempstr);
+  timetm.tm_mon = tempstr.getint() - 1;
+  if (timetm.tm_mon < 0 || timetm.tm_mon > 11)
+    return (time_t) -1;
+  
+  // day
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, ' ', tempstr);
+  timetm.tm_mday = tempstr.getint();
+  if (timetm.tm_mday < 1 || timetm.tm_mday > 31)
+    return (time_t) -1;
+  
+  // hour
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, ':', tempstr);
+  timetm.tm_hour = tempstr.getint();
+  if (timetm.tm_hour < 0 || timetm.tm_hour > 23)
+    return (time_t) -1;
+  
+  // min
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, ':', tempstr);
+  timetm.tm_min = tempstr.getint();
+  if (timetm.tm_min < 0 || timetm.tm_min > 59)
+    return (time_t) -1;
+  
+  // sec
+  if (time_here == time_end) return (time_t) -1;
+  time_here = getdelimitstr (time_here, time_end, ':', tempstr);
+  timetm.tm_sec = tempstr.getint();
+  if (timetm.tm_sec < 0 || timetm.tm_sec > 59)
+    return (time_t) -1;
+
+  timetm.tm_isdst=0;
+
+  /* This is for darwin - mktime seems to use this, so don't leave it
+     uninitialised!! Maybe the same on freebsd/netbsd?
+  */
+#if defined(__MACH__) && defined(__APPLE__)
+  timetm.tm_gmtoff=0;
+#endif
+
+  // mktime assumes timetm is localtime
+  return mktime (&timetm);
+}
+
+// returns current date and time formatted like "Thu Dec 07 23:43:38 GMT 2000"
+// if ltime is true return value will be expressed in local time, otherwise
+// it'll be Coordinated Universal Time (UTC) - no promises are made that the
+// resulting string will be formatted exactly as expected, especially on windows
+// returns "" if an error occurs
+text_t get_date (bool ltime) {
+
+  tm *tm_ptr = NULL;
+  time_t t = time(NULL);
+  if (ltime) tm_ptr = localtime (&t);
+  else tm_ptr = gmtime (&t);
+  if (tm_ptr == NULL) return "";
+  char *timestr = new char[128];
+  text_t ret;
+
+  // we do this in such an ugly way because windows is kind of flakey when
+  // it comes to timezones
+  if (ltime) {
+    strftime (timestr, 128, "%a %b %d %H:%M:%S %z %Y", tm_ptr);
+    ret.setcstr (timestr);
+  } else {
+    strftime (timestr, 128, "%a %b %d %H:%M:%S", tm_ptr);
+    ret.setcstr (timestr);
+    ret += " GMT ";
+    strftime (timestr, 128, "%Y", tm_ptr);
+    ret += timestr;
+  }
+
+  delete timestr;
+  return ret;
+}
Index: /other-projects/trunk/greenorg/lib/gsdltimes.h
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdltimes.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdltimes.h	(revision 14149)
@@ -0,0 +1,46 @@
+/**********************************************************************
+ *
+ * gsdltimes.h -- functions to deal with time
+ * Copyright (C) 1999  DigiLib Systems Limited, New Zealand
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef GSDLTIMES_H
+#define GSDLTIMES_H
+
+#include <time.h>
+#include "text_t.h"
+
+// dates are stored in the format YYYY/MM/DD hh:mm:ss
+
+// returns "" if an error occurs
+text_t time2text (time_t time);
+
+// returns -1 if an error occurs
+time_t text2time (const text_t &timestr);
+
+
+// returns formatted date in local or UTC time
+// returns "" if an error occurs
+text_t get_date (bool ltime);
+
+#endif
Index: /other-projects/trunk/greenorg/lib/gsdltools.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdltools.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdltools.cpp	(revision 14149)
@@ -0,0 +1,53 @@
+/**********************************************************************
+ *
+ * gsdltools.cpp -- 
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+#include "gsdltools.h"
+
+#if defined(__WIN32__)
+#include <windows.h>
+#include <process.h>
+#endif
+
+bool littleEndian() {
+  char s[2] = {'\xFE', '\xEF'};
+
+  if (sizeof(unsigned short) == 2)
+    return *(unsigned short*)s == 0xEFFE;
+  else if (sizeof(unsigned int) == 2)
+    return *(unsigned int*)s == 0xEFFE;
+}
+
+text_t dm_safe (const text_t &instring) {
+
+  text_t outstring;
+  text_t::const_iterator here = instring.begin();
+  text_t::const_iterator end = instring.end();
+  while (here != end) {
+    if (*here == '_' || *here == '\\') outstring.push_back('\\');
+    outstring.push_back(*here);
+    here ++;
+  }
+  return outstring;
+}
Index: /other-projects/trunk/greenorg/lib/gsdltools.h
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdltools.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdltools.h	(revision 14149)
@@ -0,0 +1,51 @@
+/**********************************************************************
+ *
+ * gsdltools.h -- 
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef GSDLTOOLS_H
+#define GSDLTOOLS_H
+
+// don't actually use this but some windows
+// versions of STL complain about use of 
+// bool keyword without it
+#include "text_t.h"
+
+// returns true if machine is little endian
+bool littleEndian();
+
+// escapes '\' and '_' characters with '\'
+// note that single '\' characters occurring 
+// naturally within text (or filenames!!) will
+// be removed by the dm macro language
+text_t dm_safe (const text_t &instring);
+
+#endif
+
+
+
+
+
+
+
Index: /other-projects/trunk/greenorg/lib/gsdlunicode.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdlunicode.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdlunicode.cpp	(revision 14149)
@@ -0,0 +1,673 @@
+/**********************************************************************
+ *
+ * gsdlunicode.cpp -- 
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+#include "gsdlunicode.h"
+
+
+// unitool is currently in mg, if mg is not being used it should
+// be moved into GSDLHOME/lib 
+#include "unitool.h"
+
+#include "fileutil.h"
+
+#include <stdio.h>
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\iostream>
+#  include <ospace\std\fstream>
+#elif defined(GSDL_USE_IOS_H)
+#  include <iostream.h>
+#  include <fstream.h>
+#else
+#  include <iostream>
+#  include <fstream>
+#endif
+
+
+// converts a unicode encode text_t string to a utf-8
+// encoded text_t string
+text_t to_utf8 (text_t::const_iterator here, text_t::const_iterator end) {
+  text_t out;
+
+  unsigned char thischar[MAXUTF8CHARLEN];
+  int i, charlen;
+
+  while (here != end) {
+    charlen = output_utf8_char (*here, thischar, &thischar[MAXUTF8CHARLEN-1]);
+    for (i=0; i<charlen; i++) out.push_back(thischar[i]);
+    here++;
+  }
+
+  return out;
+}
+
+// converts a utf-8 encoded text_t string to a unicode
+// encoded text_t string
+text_t to_uni (const text_t &in) {
+  text_t out;
+  unsigned char *in_cstr = (unsigned char *)in.getcstr();
+  unsigned char *here = in_cstr;
+  unsigned char *end = in_cstr;
+
+  unsigned short unichar;
+  int charlen = 0;
+
+  // get the last valid character in the string
+  while (*end != '\0') end++;
+  end--;
+
+  while ((charlen = parse_utf8_char (here, end, &unichar)) > 0) {
+    out.push_back(unichar);
+    here += charlen;
+  }
+
+  delete in_cstr;
+
+  return out;
+}
+
+
+// this works for all unicode values < 65536...
+void utf16outconvertclass::convert (char *out, size_t maxlen, size_t &len, status_t &status) {
+  // we should already have text_t* input set...
+  if (input == NULL || out == NULL)
+  {
+    status = finished;
+    return;
+  }
+  unsigned char *output = (unsigned char *)out;
+  text_t::iterator textend = input->end();
+  len = 0;
+  if (maxlen % 2) maxlen--; // we need an even number of output bytes...
+  while ((len < maxlen) && (texthere != textend)) {
+    unsigned short int uni_char=(unsigned short int) *texthere;
+    // big endian utf-16...
+    if (uni_char < 256) {
+      out[len]=0;   
+      out[len+1]=uni_char;
+    } else {
+      out[len]=uni_char >> 8;
+      out[len+1]=uni_char & 255;
+    }
+    len+=2;
+    ++texthere;
+  }
+  if (texthere==textend)
+    status=finished;
+  else
+    status=unfinished;
+}
+
+
+utf8inconvertclass::utf8inconvertclass () {
+  utf8buflen = 0;
+}
+
+void utf8inconvertclass::reset () {
+  start = NULL;
+  len = 0;
+  utf8buflen=0;
+}
+
+void utf8inconvertclass::convert (text_t &output, status_t &status) {
+  output.clear();
+  output.reserve (len/3);
+  
+  if (start == NULL || len == 0) {
+    if (utf8buflen == 0) status = finished;
+    else status = stopped;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *here = (unsigned char *)start;
+  unsigned char *end = here+len-1;
+  unsigned short c;
+  size_t realcharlen;
+
+  size_t charlen = getutf8charlen ();
+  while (len > 0) {
+    if (charlen == 0) {
+      // start parsing a new character
+      utf8buflen = 0;
+
+      // fast common case
+      while (len > 3) {
+  	realcharlen = parse_utf8_char (here, end, &c);
+  	output.push_back (c);
+  	here += realcharlen;
+  	len -= realcharlen;
+      }
+
+      utf8buf[utf8buflen++] = *here;
+      ++here;
+      --len;
+      charlen = getutf8charlen ();
+
+    } else if (utf8buflen < charlen) {
+      // assumes charlen is always less than MAXUTF8CHARLEN
+      utf8buf[utf8buflen++] = *here;
+      ++here;
+      --len;
+    }
+
+    if (utf8buflen == charlen) {
+      // got a complete character
+      realcharlen = parse_utf8_char (utf8buf, &utf8buf[utf8buflen-1], &c);
+      output.push_back (c);
+      
+      // move any unparsed characters. If an error occurred some of
+      // the characters might be unused.
+      int i;
+      int diff = utf8buflen - realcharlen;
+      for (i=0; i < diff; i++) utf8buf[i] = utf8buf[i+diff];
+      utf8buflen = diff;
+      charlen = getutf8charlen ();
+    }
+  }
+
+  start = (char *)here; // save current position
+
+  if (utf8buflen == 0) status = finished;
+  else status = stopped;
+}
+
+
+// returns the length that the current contents of the 
+// utf8buf should be
+size_t utf8inconvertclass::getutf8charlen () {
+  if (utf8buflen == 0) return 0;
+
+  // one byte character
+  if (utf8buf[0] < 0x80) return 1;
+
+  // error, is not the start of a utf-8 character
+  if (utf8buf[0] < 0xc0) return 1;
+
+  // two bute character
+  if (utf8buf[0] < 0xe0) return 2;
+
+  // three byte character
+  if (utf8buf[0] < 0xf0) return 3;
+
+  // error, character too long for unicode
+  return 1;
+}
+
+
+void utf8outconvertclass::reset () {
+  input = NULL;
+  outs = NULL;
+  utf8buflen = 0;
+  utf8bufhere = 0;
+}
+
+// note that convert does not null-terminate the
+// output array of characters
+void utf8outconvertclass::convert (char *output, size_t maxlen, 
+				   size_t &len, status_t &status) {
+  if (input == NULL || output == NULL) {
+    if (utf8buflen == 0) status = finished;
+    else status = unfinished;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *uoutput = (unsigned char *)output;
+  text_t::iterator textend = input->end();
+  len = 0;
+  while (len < maxlen) {
+    // empty the contents of the internal buffer
+    if (utf8buflen > 0) {
+      while (len < maxlen && utf8bufhere < utf8buflen) {
+	*uoutput = utf8buf[utf8bufhere];
+	uoutput++;
+	len++;
+	utf8bufhere++;
+      }
+
+      if (utf8bufhere == utf8buflen) {
+	utf8bufhere = 0;
+	utf8buflen = 0;
+      }
+    }
+
+    // fill up the buffer with the next character
+    if (utf8buflen == 0) {
+      if (texthere == textend) break; // finished!
+      if (!rzws || (*texthere != 0x200b))
+	utf8buflen = output_utf8_char (*texthere, utf8buf, 
+				       &utf8buf[MAXUTF8CHARLEN-1]);
+      texthere++;
+      utf8bufhere = 0;
+    }
+  }
+  
+  if (texthere == textend && utf8buflen == 0) status = finished;
+  else status = unfinished;
+}
+
+
+
+
+
+
+mapdata_t::mapdata_t () {
+  int i;
+
+  // reset all the map ptrs to be NULL
+  for (i=0; i<256; i++) {
+    ptrs[i] = (unsigned short *)NULL;
+  }
+
+  // say nothing has been loaded
+  loaded = false;
+}
+
+
+mapconvert::mapconvert () {
+  absentc = 0;
+}
+
+// setmapfile will cause loadmapfile to be called when conversion is
+// needed
+bool mapconvert::setmapfile (const text_t &themapfile, unsigned short theabsentc) {
+  // check to see if the mapfile has been already loaded
+  if (mapdata.loaded && mapfile == themapfile && absentc == theabsentc) return true;
+
+  unloadmapfile ();
+  mapfile = themapfile;
+  absentc = theabsentc;
+  
+  return true;
+}
+
+
+
+// loadmapfile should be called before any conversion is done
+bool mapconvert::loadmapfile (const text_t &themapfile,
+			      unsigned short theabsentc) {
+  FILE *mapfilein = (FILE *)NULL;
+
+  // check to see if the mapfile has been already loaded
+  if (mapdata.loaded && mapfile == themapfile && absentc == theabsentc) return true;
+
+  unloadmapfile ();
+  mapfile = themapfile;
+  absentc = theabsentc;
+
+  // open the map file
+  char *cfilename = mapfile.getcstr();
+  if (cfilename == (char *)NULL) return false;
+  mapfilein = fopen(cfilename, "rb");
+  delete cfilename;
+
+  if (mapfilein == (FILE *)NULL) return false;
+
+  unsigned char c, n1, n2;
+  unsigned short *arrptr;
+  int i;
+  c = fgetc (mapfilein);
+  while (!feof (mapfilein)) {
+    if (mapdata.ptrs[c] == (unsigned short *)NULL) {
+      // allocate a new array
+      arrptr = new unsigned short[256];
+      mapdata.ptrs[c] = arrptr;
+    } else arrptr = mapdata.ptrs[c];
+
+    // clear the array
+    for (i=0; i<256; i++) arrptr[i] = 0;
+    
+    // read in this block
+    n1 = fgetc (mapfilein);
+    n2 = fgetc (mapfilein);
+    i=0;
+    while (!feof (mapfilein)) {
+      arrptr[i] = ((unsigned short)n1 << 8) | (unsigned short)n2;
+
+      i++;
+      if (i >= 256) break;
+      n1 = fgetc (mapfilein);
+      n2 = fgetc (mapfilein);
+    }
+
+    c = fgetc (mapfilein);
+  }
+
+  mapdata.loaded = true;
+
+  return true;
+}
+
+void mapconvert::unloadmapfile () {
+  if (!mapdata.loaded) return;
+
+  int i;
+  for (i=0; i<256; i++) {
+    if (mapdata.ptrs[i] != (unsigned short *)NULL) {
+      delete [] mapdata.ptrs[i];
+      mapdata.ptrs[i] = (unsigned short *)NULL;
+    }
+  }
+
+  mapdata.loaded = false;
+}
+
+
+unsigned short mapconvert::convert (unsigned short c) {
+  if (!mapdata.loaded) {
+    if (!mapfile.empty() && loadmapfile (mapfile, absentc)) {
+      // do nothing, successfully loaded database
+    } else return absentc;
+  }
+
+  if (c == 0) return 0; // 0 always maps to 0...
+
+  unsigned short n1 = c >> 8;
+  unsigned short n2 = c & 0xff;
+
+  unsigned short *arrptr = mapdata.ptrs[n1];
+  if (arrptr == (unsigned short *)NULL) return absentc;
+
+  if (arrptr[n2] == 0) return absentc;
+  return arrptr[n2];
+}
+
+text_t mapconvert::convert (const text_t &instr) {
+  if (!mapdata.loaded) return absentc;
+
+  text_t outstr;
+  text_t::const_iterator here = instr.begin();
+  text_t::const_iterator end = instr.end();
+
+  while (here != end) {
+    outstr.push_back(this->convert(*here));
+    here++;
+  }
+  
+  return outstr;
+}
+
+
+
+
+mapinconvertclass::mapinconvertclass () {
+  multibyte = 0;
+  mapbuflen = 0;
+}
+
+void mapinconvertclass::reset () {
+  start = NULL;
+  len = 0;
+  mapbuflen=0;
+}
+
+void mapinconvertclass::convert (text_t &output, status_t &status) {
+  output.clear();
+
+  if (start == NULL || len == 0) {
+    if (mapbuflen == 0) status = finished;
+    else status = stopped;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *here = (unsigned char *)start;
+
+  size_t charlen = getmapcharlen ();
+  while (len > 0) {
+    if (charlen == 0) {
+      // start parsing a new character
+      mapbuflen = 0;
+      mapbuf[mapbuflen++] = *here;
+      ++here;
+      --len;
+      charlen = getmapcharlen ();
+
+    } else if (mapbuflen < charlen) {
+      // assumes charlen is always less than MAXMAPCHARLEN
+      mapbuf[mapbuflen++] = *here;
+      ++here;
+      --len;
+    }
+
+    if (mapbuflen == charlen) {
+      // got a complete character
+      if (charlen == 1) {
+	if (mapbuf[0] < 0x80) {
+	  // ascii character
+	  output.push_back (mapbuf[0]);
+	} else {
+	  output.push_back (converter.convert((unsigned short)mapbuf[0]));
+	}
+
+      } else {
+	// two byte character
+	output.push_back (converter.convert(((unsigned short)mapbuf[0] << 8) |
+					    (unsigned short)mapbuf[1]));
+      }
+
+      mapbuflen = 0;
+      charlen = 0;
+    }
+  }
+
+  start = (char *)here; // save current position
+
+  if (mapbuflen == 0) status = finished;
+  else status = stopped;
+}
+
+
+
+mapoutconvertclass::mapoutconvertclass () {
+  multibyte = 0;
+  mapbuflen=0; 
+  mapbufhere=0;
+}
+
+void mapoutconvertclass::reset () {
+  input = NULL;
+  outs = NULL;
+  mapbuflen = 0;
+  mapbufhere = 0;
+}
+
+// note that convert does not null-terminate the
+// output array of characters
+void mapoutconvertclass::convert (char *output, size_t maxlen, 
+				 size_t &len, status_t &status) {
+  unsigned short outc;
+
+  if (input == NULL || output == NULL) {
+    if (mapbuflen == 0) status = finished;
+    else status = unfinished;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *uoutput = (unsigned char *)output;
+  text_t::iterator textend = input->end();
+  len = 0;
+  while (len < maxlen) {
+    // empty the contents of the internal buffer
+    if (mapbuflen > 0) {
+      while (len < maxlen && mapbufhere < mapbuflen) {
+	*uoutput = mapbuf[mapbufhere];
+	uoutput++;
+	len++;
+	mapbufhere++;
+      }
+
+      if (mapbufhere == mapbuflen) {
+	mapbufhere = 0;
+	mapbuflen = 0;
+      }
+    }
+
+    // fill up the buffer with the next character
+    if (mapbuflen == 0) {
+      if (texthere == textend) break; // finished!
+      if (!rzws || (*texthere != 0x200b)) {
+	if (*texthere < 0x80) {
+	  mapbuf[0] = (unsigned char)*texthere;
+	  mapbuflen = 1;
+	} else {
+	  outc = converter.convert (*texthere);
+	  if (multibyte) {
+	    mapbuf[0] = (unsigned char)(outc >> 8);
+	    mapbuf[1] = (unsigned char)(outc & 0xff);
+	    mapbuflen = 2;
+	  } else {
+	    mapbuf[0] = outc;
+	    mapbuflen = 1;
+	  }
+	}
+      }
+
+      texthere++;
+      mapbufhere = 0;
+    }
+  }
+  
+  if (texthere == textend && mapbuflen == 0) status = finished;
+  else status = unfinished;
+}
+
+
+bool simplemapconvert::loadmapfile (bool in) {
+  if (loaded) return true;
+  if (mapfile.empty()) return false;
+
+  char *cfilename = mapfile.getcstr();
+#ifdef GSDL_USE_IOS_H
+  ifstream mapfilein (cfilename, ios::in | ios::nocreate);
+#else
+  ifstream mapfilein (cfilename, ios::in);
+#endif
+  delete cfilename;
+  if (!mapfilein) return false;
+
+  char cline[2048];
+  text_t line;
+
+  while (!mapfilein.eof()) {
+    mapfilein.getline (cline, 2048);
+    line.clear();
+    line.appendcstr (cline);
+    if (line.empty()) continue;
+    // remove comments
+    text_t::iterator end = line.end();
+    text_t::iterator here = findchar (line.begin(), end, '#');
+    if (here != end) {
+      line.erase (here, end);
+      if (line.empty()) continue;
+    }
+    
+    text_tarray parts;
+    splitchar (line.begin(), line.end(), '\t', parts);
+    
+    // do some simple sanity checks
+    if (parts.size() < 2) continue;
+    text_t::iterator begin1 = parts[0].begin();
+    text_t::iterator begin2 = parts[1].begin();
+    if (*begin1 != '0' || *(begin1+1) != 'x') continue;
+    if (*begin2 != '0' || *(begin2+1) != 'x') continue;
+    char *from = parts[0].getcstr();
+    char *to = parts[1].getcstr();
+    unsigned int f = 0, t = 0;
+    sscanf (from, "%i", &f);
+    sscanf (to, "%i", &t);
+    delete from;
+    delete to;
+    
+    if (in) mapping[(unsigned short)f] = (unsigned short)t;
+    else mapping[(unsigned short)t] = (unsigned short)f;
+  }
+
+  loaded = true;
+  return true;
+}
+
+unsigned short simplemapconvert::convert (unsigned short c, bool in) {
+
+  if (!loaded) 
+    if (!loadmapfile(in)) return absentc;
+  
+  return mapping[c];
+}
+
+
+void simplemapinconvertclass::convert (text_t &output, status_t &status) {
+  output.clear();
+  
+  if (start == NULL || len == 0) {
+    status = finished;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *here = (unsigned char *)start;
+  while (len > 0) {
+
+    if (*here < 0x80)
+      output.push_back (*here); // append this character
+    else 
+      output.push_back (converter.convert(*here, true));
+
+    ++here;
+    --len;
+  }
+
+  start = (char *)here; // save current position
+  status = finished;
+}
+
+
+void simplemapoutconvertclass::convert (char *output, size_t maxlen, 
+					size_t &len, status_t &status) {
+
+  if (input == NULL || output == NULL) {
+    status = finished;
+    return;
+  }
+
+  // don't want any funny sign conversions happening
+  unsigned char *uoutput = (unsigned char *)output;
+  text_t::iterator textend = input->end();
+  len = 0;
+  while ((len < maxlen) && (texthere != textend)) {
+
+    if (*texthere < 0x80) *uoutput = (unsigned char)(*texthere);
+    else *uoutput = converter.convert (*texthere, false);
+
+    ++uoutput;
+    ++len;
+    ++texthere;
+  }
+  
+  if (texthere == textend) status = finished;
+  else status = unfinished;
+}
Index: /other-projects/trunk/greenorg/lib/gsdlunicode.h
===================================================================
--- /other-projects/trunk/greenorg/lib/gsdlunicode.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/gsdlunicode.h	(revision 14149)
@@ -0,0 +1,277 @@
+/**********************************************************************
+ *
+ * gsdlunicode.h -- 
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *********************************************************************/
+
+
+#ifndef GSDLUNICODE_H
+#define GSDLUNICODE_H
+
+#include "text_t.h"
+
+
+// converts a unicode encode text_t string to a utf-8
+// encoded text_t string
+text_t to_utf8 (text_t::const_iterator here, text_t::const_iterator end);
+inline text_t to_utf8 (const text_t &in) {return to_utf8 (in.begin(), in.end());}
+
+// converts a utf-8 encoded text_t string to a unicode
+// encoded text_t string
+text_t to_uni (const text_t &in);
+
+#define MAXUTF8CHARLEN 3
+
+// convert from a utf-8 char stream to the text_t class
+class utf8inconvertclass : public inconvertclass {
+public:
+  utf8inconvertclass();
+  void reset ();
+  void convert (text_t &output, status_t &status);
+
+protected:
+  // buffer to hold unconverted characters in a stream
+  unsigned char utf8buf[MAXUTF8CHARLEN];
+  size_t utf8buflen;
+
+  // returns the length that the current contents of the 
+  // utf8buf should be
+  size_t getutf8charlen ();
+};
+
+
+// This class provides the option of removing zero width
+// spaces (U+200B) during the output. By default this
+// option is turned off. The functionality is actually
+// implemented by the sub-classes, this class just provides
+// the framework for these classes. 
+//
+// Note: by convention reset() should not reset the rzws flag.
+class rzwsoutconvertclass : public outconvertclass {
+public:
+  rzwsoutconvertclass () {rzws = 0;};
+  void set_rzws (int new_rzws) {rzws = new_rzws;};
+
+protected:
+  int rzws;
+};
+
+// utf16 is almost the same as unicode, except for unicode values > 65535.
+class utf16outconvertclass : public rzwsoutconvertclass {
+public:
+  utf16outconvertclass () {};
+  void convert (char *out, size_t maxlen, size_t &len, status_t &status);
+};
+
+
+// Convert from a text_t class to a utf-8 char stream
+class utf8outconvertclass : public rzwsoutconvertclass {
+public:
+  utf8outconvertclass () {utf8buflen=0; utf8bufhere=0;};
+  void reset ();
+  // note that convert does not null-terminate the
+  // output array of characters
+  void convert (char *output, size_t maxlen, 
+		size_t &len, status_t &status);
+
+protected:
+  unsigned char utf8buf[MAXUTF8CHARLEN];
+  size_t utf8buflen;
+  size_t utf8bufhere;
+};
+
+
+// mapdata_t is used by mapconvert to hold the map file data
+class mapdata_t {
+public:
+  mapdata_t();
+  bool loaded;
+  unsigned short *ptrs[256];
+};
+
+// mapconvert is used in situations where conversion is best
+// done using a map file. The mapfile should reside in 
+// gsdlhome/unicode.
+class mapconvert {
+public:
+  mapconvert ();
+  ~mapconvert () {unloadmapfile();};
+
+  // setmapfile will cause loadmapfile to be called when conversion is
+  // needed
+  bool setmapfile (const text_t &themapfile, unsigned short theabsentc);
+
+  // loadmapfile should be called before any conversion is done
+  bool loadmapfile (const text_t &themapfile, unsigned short theabsentc);
+  void unloadmapfile ();
+
+  unsigned short convert (unsigned short c);
+
+  // note that this version of convert has different semantics to
+  // the convertclass version.
+  text_t convert (const text_t &instr);
+
+protected:
+  text_t mapfile;
+  unsigned short absentc;
+  mapdata_t mapdata;
+};
+
+
+
+#define MAXMAPCHARLEN 2
+
+// convert from a gb char stream to the unicode text_t class
+class mapinconvertclass : public inconvertclass {
+public:
+  mapinconvertclass();
+  virtual ~mapinconvertclass() {};
+
+  // setmapfile will cause loadmapfile to be called when conversion is needed
+  bool setmapfile (const text_t &themapfile, unsigned short theabsentc) {
+    return converter.setmapfile (themapfile, theabsentc);
+  };
+
+  // loadmapfile should be called before any conversion takes
+  // place
+  bool loadmapfile (const text_t &themapfile, unsigned short theabsentc) {
+    return converter.loadmapfile (themapfile, theabsentc);
+  };
+
+  void set_multibyte (int new_multibyte) {multibyte = new_multibyte;};
+
+  void reset ();
+  void convert (text_t &output, status_t &status);
+
+protected:
+  // buffer to hold unconverted characters in a stream
+  unsigned char mapbuf[MAXMAPCHARLEN];
+  size_t mapbuflen;
+  int multibyte;
+
+  // note: multiple instances of mapinconvert class are expensive
+  // as each will have its own copy of the map file data. This
+  // could be reduced by making map2unimap static, but then it
+  // wouldn't be thread safe.
+  mapconvert converter;
+
+  // returns the length that the current contents of the 
+  // mapbuf should be
+  inline size_t getmapcharlen () {
+    if (mapbuflen == 0) return 0;
+    if (mapbuf[0] < 0x80) return 1;
+    if (!multibyte) return 1;
+    return 2;
+  }
+};
+
+
+// Convert from a text_t class to a map char stream
+class mapoutconvertclass : public rzwsoutconvertclass {
+public:
+  mapoutconvertclass ();
+  virtual ~mapoutconvertclass() {};
+
+  // setmapfile will cause loadmapfile to be called when conversion is needed
+  bool setmapfile (const text_t &themapfile, unsigned short theabsentc) {
+    return converter.setmapfile (themapfile, theabsentc);
+  };
+
+  // loadmapfile should be called before any conversion takes
+  // place
+  bool loadmapfile (const text_t &themapfile, unsigned short theabsentc) {
+    return converter.loadmapfile (themapfile, theabsentc);
+  };
+
+  void set_multibyte (int new_multibyte) {multibyte = new_multibyte;};
+
+  void reset ();
+  void convert (char *output, size_t maxlen, 
+		size_t &len, status_t &status);
+
+protected:
+  unsigned char mapbuf[MAXMAPCHARLEN];
+  size_t mapbuflen;
+  size_t mapbufhere;
+  int multibyte;
+
+  mapconvert converter;
+};
+
+
+// Simple input and output converter classes for use with 8 bit encodings
+// using simple textual map files. Map files should contain (at least) two
+// tab-separated fields. The first field is the mapped value and the second
+// field is the unicode value.
+
+struct ltus_t 
+{
+  bool operator()(const unsigned short &t1, const unsigned short &t2) const
+  { return t1 < t2; }
+};
+
+
+class simplemapconvert {
+public:
+  simplemapconvert () {absentc=0; loaded=false;}
+  unsigned short convert (unsigned short c, bool in);
+  void setmapfile (const text_t &themapfile) {mapfile = themapfile;}
+
+protected:
+  bool loadmapfile (bool in);
+
+  map <unsigned short, unsigned short, ltus_t> mapping;
+  bool loaded;
+  text_t mapfile;
+  unsigned short absentc;
+};
+
+
+class simplemapinconvertclass : public inconvertclass {
+public:
+  virtual ~simplemapinconvertclass () {}
+
+  void convert (text_t &output, status_t &status);
+
+  void setmapfile (const text_t &themapfile) {converter.setmapfile(themapfile);}
+  
+protected:
+  simplemapconvert converter;
+};
+
+class simplemapoutconvertclass : public rzwsoutconvertclass {
+public:
+  virtual ~simplemapoutconvertclass () {}
+
+  void convert (char *output, size_t maxlen, 
+		size_t &len, status_t &status);
+
+  void setmapfile (const text_t &themapfile) {converter.setmapfile(themapfile);}
+  
+protected:
+  simplemapconvert converter;
+};
+
+
+
+
+#endif
Index: /other-projects/trunk/greenorg/lib/sysfuncs.h
===================================================================
--- /other-projects/trunk/greenorg/lib/sysfuncs.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/sysfuncs.h	(revision 14149)
@@ -0,0 +1,352 @@
+/* System dependent definitions for GNU tar.
+   Copyright (C) 1994 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * [TS:Aug/95]
+ * Based on code from system.h file in GNU's tar package 
+ *
+ */
+
+#ifndef SYSFUNCS_H
+#define SYSFUNCS_H
+
+/* [RPAP - Feb 97: WIN32 Port] */
+#ifdef HAVE_CONFIG_H
+# ifdef __WIN32__
+#  include <WIN32cfg.h>
+# else
+#  include <config.h>
+# endif
+#endif
+
+/* Declare alloca.  AIX requires this to be the first thing in the file.  */
+
+#ifdef __GNUC__
+#ifndef alloca
+#define alloca __builtin_alloca
+#endif
+#else
+#if HAVE_ALLOCA_H
+#include <alloca.h>
+#else
+#ifdef _AIX
+#pragma alloca
+#else
+#ifndef alloca
+char *alloca ();
+#endif
+#endif
+#endif
+#endif
+
+#include <sys/types.h>
+
+/* ------------------------------------------------- */
+/* [TS:Aug/95]
+ * Some extra include files that mg needs
+ */
+#include <stdlib.h>
+#include <math.h>
+
+#ifndef log2
+# ifndef M_LN2
+#  define M_LN2 0.69314718055994530942
+# endif
+# define log2(x) (log(x)/M_LN2)
+#endif
+
+
+#ifndef HAVE_SETBUFFER
+# define setbuffer(f, b, s)  setvbuf(f, b, _IOFBF, s)
+#endif
+
+/* [RPAP - Feb 97: WIN32 Port] */
+#if defined(__MSDOS__)  && !defined(__WIN32__)
+# define SHORT_SUFFIX 1
+#endif
+
+
+
+#include <assert.h>
+
+/* ------------------------------------------------- */
+
+/* Declare a generic pointer type.  */
+#if __STDC__ || defined(__TURBOC__)
+#define voidstar void *
+#else
+#define voidstar char *
+#endif
+
+/* Declare ISASCII.  */
+
+#include <ctype.h>
+
+#if STDC_HEADERS
+#define ISASCII(Char) 1
+#else
+#ifdef isascii
+#define ISASCII(Char) isascii (Char)
+#else
+#if HAVE_ISASCII
+#define ISASCII(Char) isascii (Char)
+#else
+#define ISASCII(Char) 1
+#endif
+#endif
+#endif
+
+
+/* ------------------------------------------------- */
+/* [TS:Aug/95] 
+ * The following is copied from GNU Autoconf.Info (1.1)   
+ * It sets up the approriate string and memory functions.
+ */
+
+#if STDC_HEADERS || HAVE_STRING_H
+#include <string.h>
+   /* An ANSI string.h and pre-ANSI memory.h might conflict */
+#if !STDC_HEADERS && HAVE_MEMORY_H
+#include <memory.h>
+#endif /* not STDC_HEADERS and HAVE_MEMORY_H */
+#ifndef index
+/*#define index strchr 
+ *
+ * this is stuffing up our code so its commented out */
+#endif
+#ifndef rindex
+#define rindex strrchr
+#endif
+#ifndef bcopy
+#define bcopy(s, d, n) memcpy((d), (s), (n))
+#endif
+#ifndef bcmp
+#define bcmp(s1, s2, n) memcmp((s1), (s2), (n))
+#endif
+#ifndef bzero
+#define bzero(s, n) memset((s), 0, (n))
+#endif
+#else /* not STDC_HEADERS and not HAVE_STRING_H */
+#include <strings.h>
+   /* memory.h and strings.h conflict on some systems */
+#endif
+/* ------------------------------------------------- */
+
+
+/* Declare errno.  */
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+
+/* Declare open parameters.  */
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#else
+#include <sys/file.h>
+#endif
+
+#ifndef	O_BINARY
+#define O_BINARY 0
+#endif
+#ifndef O_CREAT
+#define O_CREAT 0
+#endif
+#ifndef	O_NDELAY
+#define O_NDELAY 0
+#endif
+#ifndef	O_RDONLY
+#define O_RDONLY 0
+#endif
+#ifndef O_RDWR
+#define O_RDWR 2
+#endif
+
+/* Declare file status routines and bits.  */
+
+#include <sys/stat.h>
+
+#ifdef STAT_MACROS_BROKEN
+#undef S_ISBLK
+#undef S_ISCHR
+#undef S_ISDIR
+#undef S_ISFIFO
+#undef S_ISLNK
+#undef S_ISMPB
+#undef S_ISMPC
+#undef S_ISNWK
+#undef S_ISREG
+#undef S_ISSOCK
+#endif
+
+/* On MSDOS, there are missing things from <sys/stat.h>.  */
+#if defined(__MSDOS__)
+#define S_ISUID 0
+#define S_ISGID 0
+#define S_ISVTX 0
+#endif
+
+#if defined(__GNUC__) && defined(__WIN32__)
+#include <limits.h>
+#endif
+
+#ifndef S_ISREG			/* POSIX.1 stat stuff missing */
+#define mode_t unsigned short
+#endif
+#if !defined(S_ISBLK) && defined(S_IFBLK)
+#define S_ISBLK(Mode) (((Mode) & S_IFMT) == S_IFBLK)
+#endif
+#if !defined(S_ISCHR) && defined(S_IFCHR)
+#define S_ISCHR(Mode) (((Mode) & S_IFMT) == S_IFCHR)
+#endif
+#if !defined(S_ISDIR) && defined(S_IFDIR)
+#define S_ISDIR(Mode) (((Mode) & S_IFMT) == S_IFDIR)
+#endif
+#if !defined(S_ISREG) && defined(S_IFREG)
+#define S_ISREG(Mode) (((Mode) & S_IFMT) == S_IFREG)
+#endif
+#if !defined(S_ISFIFO) && defined(S_IFIFO)
+#define S_ISFIFO(Mode) (((Mode) & S_IFMT) == S_IFIFO)
+#endif
+#if !defined(S_ISLNK) && defined(S_IFLNK)
+#define S_ISLNK(Mode) (((Mode) & S_IFMT) == S_IFLNK)
+#endif
+#if !defined(S_ISSOCK) && defined(S_IFSOCK)
+#define S_ISSOCK(Mode) (((Mode) & S_IFMT) == S_IFSOCK)
+#endif
+#if !defined(S_ISMPB) && defined(S_IFMPB)	/* V7 */
+#define S_ISMPB(Mode) (((Mode) & S_IFMT) == S_IFMPB)
+#define S_ISMPC(Mode) (((Mode) & S_IFMT) == S_IFMPC)
+#endif
+#if !defined(S_ISNWK) && defined(S_IFNWK)	/* HP/UX */
+#define S_ISNWK(Mode) (((Mode) & S_IFMT) == S_IFNWK)
+#endif
+
+#if !defined(S_ISCTG) && defined(S_IFCTG)	/* contiguous file */
+#define S_ISCTG(Mode) (((Mode) & S_IFMT) == S_IFCTG)
+#endif
+#if !defined(S_ISVTX)
+#define S_ISVTX 0001000
+#endif
+
+/* [RPAP - Feb 97: WIN32 Port] */
+#if !defined(_POSIX_SOURCE) && !defined(__WIN32__)
+#include <sys/param.h>
+#endif
+
+/* Include <unistd.h> before any preprocessor test of _POSIX_VERSION.  */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+
+/* Declare standard functions.  */
+
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#else
+voidstar malloc ();
+voidstar realloc ();
+char *getenv ();
+#endif
+
+#include <stdio.h>
+
+#ifndef _POSIX_VERSION
+#ifdef __MSDOS__
+#include <io.h>
+#else
+off_t lseek ();
+#endif
+#endif
+
+#ifdef WITH_DMALLOC
+#undef HAVE_VALLOC
+#define DMALLOC_FUNC_CHECK
+#include <dmalloc.h>
+#endif
+
+/* Prototypes for external functions.  */
+
+#ifndef __P
+#if PROTOTYPES
+#define __P(Args) Args
+#else
+#define __P(Args) ()
+#endif
+#endif
+
+#if HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
+#if ENABLE_NLS
+#include <libintl.h>
+#define _(Text) gettext (Text)
+#else
+#define textdomain(Domain)
+#define _(Text) Text
+#endif
+
+/* Library modules.  */
+
+#if (HAVE_VPRINTF || HAVE_DOPRNT) && __STDC__
+/*void error __P ((int, int, const char *,...));*/
+void error (int, int, const char *,...);
+#else
+void error (int, int, char *, char *, char *, char *, char *, char *, char *, char *, char *);
+#endif
+
+#ifndef HAVE_STRSTR
+char *strstr __P ((const char *, const char *));
+#endif
+
+/* [RB/TS:Oct/95] commented out. Used by lib/gmalloc.c - but it defines it anyway ???
+ *#ifndef HAVE_VALLOC
+ *#define valloc(Size) malloc (Size)
+ *#endif
+ */
+
+voidstar xmalloc __P ((size_t));
+voidstar xrealloc __P ((voidstar, size_t));
+char *xstrdup __P ((const char *));
+
+/* [TS:Aug/95] 
+ * These were required by files which referred 
+ * to these as function pointers. 
+ * e.g. huffman.c - fread,  mgfelics.c - fgetc
+ */
+#ifndef HAVE_FREAD_DECL
+extern size_t   fread __P ((void *, size_t, size_t, FILE *));
+#endif
+#ifndef HAVE_FGETC_DECL
+extern int      fgetc __P ((FILE *));
+#endif
+
+/* [RPAP - Feb 97: WIN32 Port] */
+#ifndef u_long
+# define u_long unsigned long
+#endif
+#ifndef u_char
+# define u_char unsigned char
+#endif
+
+
+#endif /* SYSFUNCS_H */
Index: /other-projects/trunk/greenorg/lib/text_t.cpp
===================================================================
--- /other-projects/trunk/greenorg/lib/text_t.cpp	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/text_t.cpp	(revision 14149)
@@ -0,0 +1,895 @@
+/**********************************************************************
+ *
+ * text_t.cpp -- a simple 16-bit character string class
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ *
+ *********************************************************************/
+
+/*
+   $Log$
+   Revision 1.1  2003/09/12 04:52:19  sjboddie
+   *** empty log message ***
+
+   Revision 1.21  2001/06/01 02:51:28  sjboddie
+   Changes to get phind working under windows
+
+   Revision 1.20  2001/01/25 18:26:44  cs025
+   Included CORBA branch for first time
+
+   Revision 1.15.2.2  2000/04/05 10:19:38  syeates
+   added automatic conversion to allow text_t's to be <<'ed to ostreams
+
+   Revision 1.15.2.1  2000/04/04 15:02:29  cs025
+   Corba first commit
+
+   Revision 1.15  1999/10/14 22:52:39  sjboddie
+   joinchar can join using text_t string now too
+
+   Revision 1.14  1999/09/24 02:30:03  rjmcnab
+   added function has_unicode_letdig
+
+   Revision 1.13  1999/09/07 04:57:43  sjboddie
+   added gpl notice
+
+   Revision 1.12  1999/08/31 08:04:41  rjmcnab
+   Fixed a small but hard to find bug in getcarr
+
+   Revision 1.11  1999/07/01 04:05:09  rjmcnab
+   Optimised append functions slightly and added a reserve function.
+
+   Revision 1.10  1999/04/26 03:58:03  sjboddie
+   added is_number function
+
+   Revision 1.9  1999/04/06 22:17:24  rjmcnab
+   Added splits and joins using text_tset.
+
+   Revision 1.8  1999/02/28 23:14:41  rjmcnab
+
+   Added uc and lc to convert to uppercase and lowercase.
+
+   Revision 1.7  1999/02/21 22:26:39  rjmcnab
+
+   Made getint() a constant function.
+
+   Revision 1.6  1999/02/03 01:13:26  sjboddie
+
+   Got interface to handle subcollections and language subcollections -
+   committed changes made to some of the collections
+
+   Revision 1.5  1999/01/19 01:38:14  rjmcnab
+
+   Made the source more portable.
+
+   Revision 1.4  1999/01/12 01:51:00  rjmcnab
+
+   Standard header.
+
+   Revision 1.3  1999/01/08 02:33:16  rjmcnab
+
+   Added standard header to source files.
+
+ */
+
+#include "text_t.h"
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\algorithm>
+#elif defined(GSDL_USE_STL_H)
+#  if defined(GSDL_USE_ALGO_H)
+#    include <algo.h>
+#  else
+#    include <algorithm.h>
+#  endif
+#else
+#  include <algorithm>
+#endif
+
+#ifdef HAVE_CONFIG_H
+# ifdef __WIN32__
+#  include "WIN32cfg.h"
+# else
+#  include "config.h"
+# endif
+#endif
+
+
+#include "unitool.h"
+
+////////////////////////////////////
+// text_t methods
+////////////////////////////////////
+
+// new stream converter ...
+ostream& operator<< (ostream &o, const text_t text)
+{
+  text_t::const_iterator ithere = text.begin();
+  text_t::const_iterator itend = text.end();
+
+  while (ithere != itend)
+    {
+      if (*ithere < 256)
+	{
+	  o << (unsigned char)(*ithere);
+	}
+      else 
+	{
+	// put a space or a question mark depending on what
+	// the character is. Question marks tell the user that
+	// they are missing some information.
+	if (is_unicode_space (*ithere)) 
+	  o << ' ';
+	else 
+	  o << '?';
+      }
+      ithere++;
+    }
+
+  return o;
+}
+
+text_t::text_t () 
+{
+  setencoding(0);
+  clear ();
+}
+
+text_t::text_t (int i) 
+{
+  setencoding(0);
+  clear ();
+  appendint (i);
+}
+
+text_t::text_t (char *s) 
+{ 
+  setencoding(0);
+  clear ();
+  appendcstr (s);
+}
+
+
+void text_t::append (const text_t &t) 
+{
+  text.insert(text.end(), t.begin(), t.end());
+  //  const_iterator here, end=t.end();
+  //  for (here=t.begin(); here!=end;here++)
+  //    {
+  //      text.push_back(*here);
+  //    }
+}
+
+void text_t::appendrange (iterator first, iterator last) 
+{
+  text.insert(text.end(), first, last);
+  //  while (first != last) 
+  //  {
+  //    text.push_back (*first);
+  //    first++;
+  //  }
+}
+
+void text_t::appendrange (const_iterator first, const_iterator last) 
+{
+  text.insert(text.end(), first, last);
+  //  while (first != last) 
+  //  {
+  //    text.push_back (*first);
+  //    first++;
+  //  }
+}
+
+void text_t::appendint (int i)
+{
+  // deal with zeros and negatives
+  if (i == 0) 
+    {
+      text.push_back('0');
+      return;
+    }
+  else if (i < 0)
+    {
+      text.push_back('-');
+      i *= -1;
+    }
+
+  // get a buffer for the conversion
+  int maxbuflen = sizeof(int)*3;
+  char *buf = new char[maxbuflen];
+  int len = 0;
+  
+  // get the number in reverse
+  while (i > 0)
+    {
+      buf[len++] = '0'+ (i%10);
+      i = i/10;
+    }
+
+  // reverse the number
+  while (len > 0)
+    {
+      text.push_back(buf[--len]);
+    }
+
+  delete buf;
+}
+
+int text_t::getint () const
+{
+  int i = 0;
+  int mult = 1; // become -1 for negative numbers
+
+  const_iterator here = text.begin();
+  const_iterator end = text.end();
+  
+  // do plus and minus signs
+  if (here != end)
+    {
+      if (*here == '-')
+	{
+	  mult = -1;
+	  here++;
+	}
+      else if (*here == '+')
+	{
+	  mult = 1;
+	  here++;
+	}
+    }
+
+  // deal with the number
+  while ((here != end) && (*here >= '0') && (*here <= '9'))
+    {
+      i = 10*i + (*here - '0');
+      here++;
+    }
+
+  i *= mult;
+  return i;
+}
+
+unsigned long text_t::getulong () const
+{
+  unsigned long i = 0;
+
+  const_iterator here = text.begin();
+  const_iterator end = text.end();
+
+  while ((here != end) && (*here >= '0') && (*here <= '9'))
+    {
+      i = 10*i + (*here - '0');
+      here++;
+    }
+
+  return i;
+}
+
+void text_t::appendcarr (char *s, size_type len)
+{
+  unsigned char *us = (unsigned char *)s;
+  while (len > 0) 
+    {
+      text.push_back (*us); // append this character
+      us++;
+      len--;
+    }
+}
+
+void text_t::appendcstr (char *s) 
+{
+  unsigned char *us = (unsigned char *)s;
+  while (*us != '\0') 
+    {
+      text.push_back (*us); // append this character
+      us++;
+    }
+}
+
+
+// strings returned from getcarr and getcstr become the callers 
+// responsibility and should be deallocated with "delete"
+
+char *text_t::getcarr(size_type &len) const
+{
+  unsigned char *cstr = new unsigned char[size()];
+  len = 0;
+
+  const_iterator ithere = begin();
+  const_iterator itend = end();
+  while (ithere != itend)
+    {
+      if (*ithere < 256) cstr[len] = (unsigned char)(*ithere);
+      else {
+	// put a space or a question mark depending on what
+	// the character is. Question marks tell the user that
+	// they are missing some information.
+	if (is_unicode_space (*ithere)) cstr[len] = ' ';
+	else cstr[len] = '?';
+      }
+      len++;
+      ithere++;
+    }
+
+  return (char *)cstr;
+}
+
+char *text_t::getcstr() const
+{
+  unsigned char *cstr = new unsigned char[size() + 1];
+  const_iterator ithere = begin();
+  const_iterator itend = end();
+  int len = 0;
+
+  while (ithere != itend)
+    {
+      if (*ithere < 256) cstr[len] = (unsigned char)(*ithere);
+      else {
+	// put a space or a question mark depending on what
+	// the character is. Question marks tell the user that
+	// they are missing some information.
+	if (is_unicode_space (*ithere)) cstr[len] = ' ';
+	else cstr[len] = '?';
+      }
+      len++;
+      ithere++;
+    }
+
+  cstr[len] = '\0';
+
+  return (char *)cstr;
+}
+
+
+// general functions which work on text_ts
+
+// find a character within a range
+text_t::const_iterator findchar (text_t::const_iterator first, text_t::const_iterator last, 
+				 unsigned short c)
+{
+  while (first != last)
+    {
+      if (*first == c) break;
+      first++;
+    }
+  return first;
+}
+
+text_t::iterator findchar (text_t::iterator first, text_t::iterator last, 
+			   unsigned short c)
+{
+  while (first != last)
+    {
+      if (*first == c) break;
+      first++;
+    }
+  return first;
+}
+
+text_t::iterator findword (text_t::iterator first, text_t::iterator last, 
+			   const text_t& word)
+{
+  text_t::const_iterator word_begin = word.begin();
+  text_t::const_iterator word_end = word.end();
+
+  while (first != last)
+    {
+      text_t::iterator char_match = first;
+      text_t::const_iterator word_here = word_begin;
+      while (word_here!=word_end)
+	{
+	  if (*char_match != *word_here)
+	    {
+	      break;
+	    }
+	  char_match++;
+	  word_here++;
+	}
+      if (word_here==word_end)
+	{
+	  return first;
+	}
+      first++;
+    }
+  return last; // get to here only if there is no match
+}
+
+// get a string up to the next delimiter (which is skipped)
+text_t::const_iterator getdelimitstr (text_t::const_iterator first, 
+				      text_t::const_iterator last,
+				      unsigned short c, text_t &outstr)
+{
+  text_t::const_iterator here = first;
+  here = findchar (first, last, c);
+  outstr.clear();
+  outstr.appendrange (first, here);
+  if (here != last) here++; // skip c
+  return here;
+}
+
+text_t::iterator getdelimitstr (text_t::iterator first, text_t::iterator last,
+				unsigned short c, text_t &outstr)
+{
+  text_t::iterator here = first;
+  here = findchar (first, last, c);
+  outstr.clear();
+  outstr.appendrange (first, here);
+  if (here != last) here++; // skip c
+  return here;
+}
+
+// split a string with a character
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tset &outlist)
+{
+  outlist.erase(outlist.begin(), outlist.end());
+
+  text_t t;
+
+  while (first != last)
+    {
+      first = getdelimitstr (first, last, c, t);
+      outlist.insert (t);
+    }
+}
+
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tlist &outlist)
+{
+  outlist.erase(outlist.begin(), outlist.end());
+
+  text_t t;
+
+  while (first != last)
+    {
+      first = getdelimitstr (first, last, c, t);
+      outlist.push_back (t);
+    }
+}
+
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tarray &outlist)
+{
+  outlist.erase(outlist.begin(), outlist.end());
+
+  text_t t;
+
+  while (first != last)
+    {
+      first = getdelimitstr (first, last, c, t);
+      outlist.push_back (t);
+    }
+}
+
+// join a string using a character
+void joinchar (const text_tset &inlist, unsigned short c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tset::const_iterator here = inlist.begin ();
+  text_tset::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext.push_back (c);
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+void joinchar (const text_tlist &inlist, unsigned short c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tlist::const_iterator here = inlist.begin ();
+  text_tlist::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext.push_back (c);
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+void joinchar (const text_tarray &inlist, unsigned short c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tarray::const_iterator here = inlist.begin ();
+  text_tarray::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext.push_back (c);
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+void joinchar (const text_tlist &inlist, text_t c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tlist::const_iterator here = inlist.begin ();
+  text_tlist::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext += c;
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+void joinchar (const text_tset &inlist, text_t c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tset::const_iterator here = inlist.begin ();
+  text_tset::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext += c;
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+void joinchar (const text_tarray &inlist, text_t c, text_t &outtext)
+{
+  outtext.clear ();
+
+  text_tarray::const_iterator here = inlist.begin ();
+  text_tarray::const_iterator end = inlist.end ();
+  bool first = true;
+  while (here != end)
+    {
+      if (!first) outtext += c;
+      first = false;
+      outtext += *here;
+      here++;
+    }
+}
+
+// count the occurances of a character within a range
+int countchar (text_t::const_iterator first, text_t::const_iterator last,
+	       unsigned short c)
+{
+  int count = 0;
+  while (first != last) {
+    if (*first == c) count ++;
+    first ++;
+  }
+  return count;
+}
+
+// return a substring of string from first up to but not including last
+text_t substr (text_t::const_iterator first, text_t::const_iterator last) {
+
+  text_t substr;
+  while (first != last) {
+    substr.push_back(*first);
+    first ++;
+  }
+  return substr;
+}
+
+
+// convert to lowercase
+void lc (text_t::iterator first, text_t::iterator last) {
+  while (first != last) {
+    *first = unicode_tolower(*first);
+    first++;
+  }
+}
+
+// convert to uppercase
+void uc (text_t::iterator first, text_t::iterator last) {
+  while (first != last) {
+    *first = unicode_toupper(*first);
+    first++;
+  }
+}
+
+
+// checks to see if it is a number (i.e. contains only 0-9)
+bool is_number (const text_t &text) {
+
+  text_t::const_iterator here = text.begin();
+  text_t::const_iterator end = text.end();
+
+  while (here != end) {
+    if ((*here!='0') && (*here!='1') && (*here!='2') &&
+	(*here!='3') && (*here!='4') && (*here!='5') &&
+	(*here!='6') && (*here!='7') && (*here!='8') &&
+	(*here!='9')) return false;
+    here ++;
+  }
+  return true;
+}
+
+
+// checks to see if the text has any letters or digits
+bool has_unicode_letdig (const text_t &text) {
+  if (text.empty()) return false;
+  
+  text_t::const_iterator here = text.begin();
+  text_t::const_iterator end = text.end();
+  while (here != end) {
+    if (is_unicode_letdig (*here)) return true;
+    here++;
+  }
+
+  return false;
+}
+
+
+
+////////////////////////////////////
+// convertclass methods
+////////////////////////////////////
+
+// conversion classes used for getting information in to and out of
+// the text_t class.
+
+convertclass::convertclass () 
+{
+  // nothing to do
+}
+
+void convertclass::reset ()
+{
+  // nothing to do
+}
+
+
+////////////////////////////////////
+// inconvertclass methods
+////////////////////////////////////
+
+// convert from a char stream to the text_t class
+// the default version assumes the input is a ascii
+// character array
+
+inconvertclass::inconvertclass () 
+{
+  start = NULL;
+  len = 0;
+}
+
+
+void inconvertclass::reset ()
+{
+  start = NULL;
+  len = 0;
+}
+
+void inconvertclass::setinput (char *thestart, size_t thelen)
+{
+  start = thestart;
+  len = thelen;
+}
+
+void inconvertclass::convert (text_t &output, status_t &status)
+{
+  output.clear();
+
+  if (start == NULL || len == 0)
+    {
+      status = finished;
+      return;
+    }
+
+  // don't want any funny sign conversions happening
+  unsigned char *here = (unsigned char *)start;
+  while (len > 0) 
+    {
+      output.push_back (*here); // append this character
+      ++here;
+      --len;
+    }
+
+  start = (char *)here; // save current position
+  status = finished;
+}
+
+// will treat the text_t as a 8-bit string and convert
+// it to a 16-bit string using the about convert method.
+text_t inconvertclass::convert (const text_t &t) {
+  text_t out;
+  text_t tmpout;
+  status_t status;
+  text_t::const_iterator here = t.begin();
+  text_t::const_iterator end = t.end();
+  unsigned char cbuf[256];
+  size_t cbuflen = 0;
+ 
+  while (here != end) {
+    while (here != end && cbuflen < 256) {
+      cbuf[cbuflen++] = (unsigned char)(*here & 0xff);
+      here++;
+    }
+
+    if (cbuflen > 0) {
+      setinput ((char *)cbuf, cbuflen);
+      status = unfinished;
+      while (status == unfinished) {
+	convert (tmpout, status);
+	out += tmpout;
+      }
+      cbuflen = 0;
+    }
+  }
+
+  out.setencoding (0); // unicode
+
+  return out;
+}
+
+// an instance of the default inconvertclass to do simple
+// conversions. Note that any functions that use this are
+// not reentrant. If a function needs to be reentrant it
+// should declare its own instance.
+inconvertclass ascii2text_t;
+
+
+////////////////////////////////////
+// outconvertclass methods
+////////////////////////////////////
+
+// Convert from a text_t class to a char stream
+// This default version assumes the output is a ascii
+// character array. If you set the output stream you
+// can use this class to output to a stream using the
+// << operator. The << operator can also be conveniently
+// used to set the output stream by doing something like
+//
+// cout << text_t2ascii << text_tstr << anothertext_tstr;
+//
+outconvertclass::outconvertclass ()
+{
+  input = NULL;
+  outs = NULL;
+}
+
+void outconvertclass::reset ()
+{
+  input = NULL;
+  outs = NULL;
+}
+
+void outconvertclass::setinput (text_t *theinput)
+{
+  input = theinput;
+  if (input != NULL) texthere = input->begin();
+}
+
+void outconvertclass::convert (char *output, size_t maxlen, 
+		      size_t &len, status_t &status)
+{
+  if (input == NULL || output == NULL)
+    {
+      status = finished;
+      return;
+    }
+
+  // don't want any funny sign conversions happening
+  unsigned char *uoutput = (unsigned char *)output;
+  text_t::iterator textend = input->end();
+  len = 0;
+  while ((len < maxlen) && (texthere != textend)) 
+    {
+      if (*texthere < 256) *uoutput = (unsigned char)(*texthere);
+      else {
+	// put a space or a question mark depending on what
+	// the character is. Question marks tell the user that
+	// they are missing some information.
+	if (is_unicode_space (*texthere)) *uoutput = ' ';
+	else *uoutput = '?';
+      }
+      ++uoutput;
+      ++len;
+      ++texthere;
+    }
+  
+  if (texthere == textend) status = finished;
+  else status = unfinished;
+}
+
+// will convert the 16-bit string to a 8-bit stream
+// and place the result in a text_t. This method uses
+// the above convert function.
+text_t outconvertclass::convert (const text_t &t) {
+  text_t out;
+  unsigned char cbuf[256];
+  size_t cbuflen = 0;
+  status_t status = unfinished;
+
+  setinput ((text_t *)&t); // discard constant
+  while (status == unfinished) {
+    convert ((char *)cbuf, 256, cbuflen, status);
+    out.appendcarr ((char *)cbuf, cbuflen);
+  }
+
+  out.setencoding (1); // other encoding
+  
+  return out;
+}
+
+
+void outconvertclass::setostream (ostream *theouts)
+{
+  outs = theouts;
+}
+
+ostream *outconvertclass::getostream ()
+{
+  return outs;
+}
+
+
+
+
+// an instance of the default outconvertclass to do simple
+// conversions
+outconvertclass text_t2ascii;
+
+
+
+// stream operators for the output class
+
+outconvertclass &operator<< (ostream &theouts, outconvertclass &outconverter)
+{
+  outconverter.setostream(&theouts);
+  return outconverter;
+}
+
+
+#define STREAMBUFSIZE 256
+outconvertclass &operator<< (outconvertclass &outconverter, const text_t &t)
+{
+  ostream *outstream = outconverter.getostream();
+
+  if (outstream == NULL) return outconverter;
+
+  char outbuf[STREAMBUFSIZE];
+  size_t len;
+  outconvertclass::status_t status = outconvertclass::unfinished;
+
+  // assume that there is no data needing converting
+  // left in the converter
+  outconverter.setinput ((text_t *)(&t)); // note the const -> nonconst conversion
+
+  while (status == outconvertclass::unfinished)
+    {
+      outconverter.convert (outbuf, STREAMBUFSIZE, len, status);
+      if (len > 0) outstream->write(outbuf, len);
+    }
+
+  return outconverter;
+}
Index: /other-projects/trunk/greenorg/lib/text_t.h
===================================================================
--- /other-projects/trunk/greenorg/lib/text_t.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/text_t.h	(revision 14149)
@@ -0,0 +1,372 @@
+/**********************************************************************
+ *
+ * text_t.h -- a simple 16-bit character string class
+ * Copyright (C) 1999  The New Zealand Digital Library Project
+ *
+ * A component of the Greenstone digital library software
+ * from the New Zealand Digital Library Project at the
+ * University of Waikato, New Zealand.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ *
+ *********************************************************************/
+
+
+#ifndef TEXT_T_H
+#define TEXT_T_H
+
+#include "gsdlconf.h"
+
+#if defined(GSDL_USE_OBJECTSPACE)
+#  include <ospace\std\vector>
+#  include <ospace\std\list>
+#  include <ospace\std\set>
+#  include <ospace\std\map>
+#elif defined(GSDL_USE_STL_H)
+#  include <vector.h>
+#  include <list.h>
+#  include <set.h>
+#  include <map.h>
+#else
+#  include <vector>
+#  include <list>
+#  include <set>
+#  include <map>
+#endif
+
+// use the standard namespace
+#if !defined (GSDL_NAMESPACE_BROKEN)
+#if defined(GSDL_USE_OBJECTSPACE)
+using namespace ospace::std;
+#else
+using namespace std;
+#endif
+#endif
+
+// class prototypes
+class inconvertclass;
+class outconvertclass;
+
+
+// for those stupid compilers which need it
+#if defined(GSDL_NEED_DESTROY_USHORT)
+inline void destroy(unsigned short *) {};
+inline void destroy(int *) {};
+#endif
+
+typedef vector<unsigned short> usvector;
+
+// The class text_t can handle long strings which may contain
+// null characters. It uses unsigned shorts to represent up to
+// 64K character values.
+class text_t {
+  public:
+  //type support for ucvector
+  typedef usvector::iterator iterator;
+  typedef usvector::const_iterator const_iterator;
+  typedef usvector::reference reference;
+  typedef usvector::const_reference const_reference;
+  typedef usvector::size_type size_type;
+  typedef usvector::difference_type difference_type;
+  typedef usvector::const_reverse_iterator const_reverse_iterator;
+  typedef usvector::reverse_iterator reverse_iterator;
+  
+protected:
+  usvector text;
+  unsigned short encoding; // 0 = unicode, 1 = other
+  
+public:
+  // constructors
+  text_t ();
+  text_t (int i);
+  text_t (char *s); // assumed to be a normal c string
+
+  void setencoding (unsigned short theencoding) {encoding=theencoding;};
+  unsigned short getencoding () {return encoding;};
+
+  usvector& text_as_usvector() { return text ; };
+  const usvector& text_as_usvector() const { return text ; };
+
+  // basic container support
+  iterator begin () {return text.begin();}
+  const_iterator begin () const {return text.begin();}
+  iterator end () {return text.end();}
+  const_iterator end () const {return text.end();}
+
+  void erase(iterator pos) {text.erase(pos);}
+  void erase(iterator first, iterator last) {text.erase(first, last);}
+  void push_back(unsigned short c) {text.push_back(c);}
+  void pop_back() {text.pop_back();}
+  text_t &operator=(const text_t &x) {text=x.text; encoding=x.encoding; return *this;}
+  reference operator[](size_type n) {return text[n];};
+  const_reference operator[](size_type n) const {return text[n];};
+
+  void reserve (size_type n) {text.reserve(n);}
+  
+  bool empty () const {return text.empty();}
+  size_type size() const {return text.size();}
+  friend inline bool operator!=(const text_t& x, const text_t& y)
+	{return (x.text != y.text);}
+  friend inline bool operator==(const text_t& x, const text_t& y) 
+	{return (x.text == y.text);}
+  friend inline bool operator<(const text_t& x, const text_t& y) 
+	{return (x.text < y.text);}
+  friend inline bool operator>(const text_t& x, const text_t& y) 
+	{return (x.text > y.text);}
+  friend inline bool operator>=(const text_t& x, const text_t& y) 
+	{return (x.text >= y.text);}
+  friend inline bool operator<=(const text_t& x, const text_t& y) 
+	{return (x.text <= y.text);}
+  
+  // added functionality
+  void clear () {text.erase(text.begin(),text.end());}
+  void append (const text_t &t);
+  void appendrange (iterator first, iterator last);
+  void appendrange (const_iterator first, const_iterator last);
+  text_t &operator+= (const text_t &t) {append(t);return *this;}
+
+  // support for integers
+  void appendint (int i);
+  void setint (int i) {clear();appendint(i);}
+  text_t &operator=(int i) {setint (i);return *this;}
+  text_t &operator+= (int i) {appendint(i);return *this;}
+  int getint () const;
+
+  // same as getint but returns an unsigned long
+  unsigned long getulong () const;
+
+  // support for arrays of chars
+  void appendcarr (char *s, size_type len);
+  void setcarr (char *s, size_type len) {clear();appendcarr(s,len);}
+
+  // support for null-terminated C strings
+  void appendcstr (char *s);
+  void setcstr (char *s) {clear();appendcstr(s);}
+  text_t &operator= (char *s) {setcstr(s);return *this;} // c string
+  text_t &operator+= (char *s) {appendcstr(s);return *this;} // c string
+
+  // support for const null-terminated C string
+  void appendcstr (const char *s) {appendcstr((char *)s);}
+  void setcstr (const char *s) {clear();appendcstr((char *) s);}
+  text_t &operator= (const char *s) {setcstr((char *) s);return *this;} // c string
+  text_t &operator+= (const char *s) {appendcstr((char *) s);return *this;} // c string
+
+  // strings returned from getcarr and getcstr become the callers 
+  // responsibility and should be deallocated with "delete"
+  char *getcarr(size_type &len) const;
+  char *getcstr() const;
+
+};
+
+// new stream converter ...
+ostream& operator<< (ostream &o, const text_t text);
+
+inline text_t operator+(const text_t &t1, const text_t &t2)
+{
+  text_t tnew = t1;
+  tnew.append(t2);
+  return tnew;
+}
+
+inline text_t operator+(const text_t &t1, int i1)
+{
+  text_t tnew = t1;
+  tnew.appendint(i1);
+  return tnew;
+}
+
+inline text_t operator+(const text_t &t1, char *s1)
+{
+  text_t tnew = t1;
+  tnew.appendcstr(s1);
+  return tnew;
+}
+
+
+
+
+struct eqtext_t 
+{
+  bool operator()(const text_t &t1, const text_t &t2) const
+  { return t1 == t2; }
+};
+
+struct lttext_t 
+{
+  bool operator()(const text_t &t1, const text_t &t2) const
+  { return t1 < t2; }
+};
+
+
+// frequently used derived types
+typedef set<text_t,lttext_t> text_tset;
+typedef list<text_t> text_tlist;  // more efficient for insertions/deletions
+typedef vector<text_t> text_tarray; // more space efficient than text_tlist
+typedef map<text_t, text_t, lttext_t> text_tmap;
+
+
+// general functions which work on text_ts
+
+// find a character within a range
+text_t::const_iterator findchar (text_t::const_iterator first, text_t::const_iterator last, 
+				 unsigned short c);
+text_t::iterator findchar (text_t::iterator first, text_t::iterator last, 
+			   unsigned short c);
+
+text_t::iterator findword (text_t::iterator first, text_t::iterator last,
+			   const text_t &word);
+
+// get a string up to the next delimiter (which is skipped)
+text_t::const_iterator getdelimitstr (text_t::const_iterator first, 
+				      text_t::const_iterator last,
+				      unsigned short c, text_t &outstr);
+text_t::iterator getdelimitstr (text_t::iterator first, text_t::iterator last,
+				unsigned short c, text_t &outstr);
+
+// split a string with a character
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tset &outlist);
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tlist &outlist);
+void splitchar (text_t::const_iterator first, text_t::const_iterator last,
+		unsigned short c, text_tarray &outlist);
+
+// join a string using a character
+void joinchar (const text_tset &inlist, unsigned short c, text_t &outtext);
+void joinchar (const text_tlist &inlist, unsigned short c, text_t &outtext);
+void joinchar (const text_tarray &inlist, unsigned short c, text_t &outtext);
+void joinchar (const text_tset &inlist, text_t c, text_t &outtext);
+void joinchar (const text_tlist &inlist, text_t c, text_t &outtext);
+void joinchar (const text_tarray &inlist, text_t c, text_t &outtext);
+
+// count the occurances of a character within a range
+int countchar (text_t::const_iterator first, text_t::const_iterator last,
+	       unsigned short c);
+
+// return a substring of string from first up to but not including last
+text_t substr (text_t::const_iterator first, text_t::const_iterator last);
+
+// convert to lowercase
+void lc (text_t::iterator first, text_t::iterator last);
+inline void lc (text_t &t) {lc (t.begin(), t.end());}
+
+// convert to uppercase
+void uc (text_t::iterator first, text_t::iterator last);
+inline void uc (text_t &t) {uc (t.begin(), t.end());}
+
+// checks to see if it is a number (i.e. contains only 0-9)
+bool is_number (const text_t &text);
+
+// checks to see if the text has any letters or digits
+bool has_unicode_letdig (const text_t &text);
+
+
+// conversion classes used for getting information in to and out of
+// the text_t class.
+
+class convertclass 
+{
+public:
+  enum status_t {finished, stopped, unfinished};
+  
+  convertclass ();
+  virtual void reset ();
+};
+
+
+
+// convert from a char stream to the text_t class
+// the default version assumes the input is a ascii
+// character array
+class inconvertclass : public convertclass
+{
+public:
+  inconvertclass ();
+  void reset ();
+  void setinput (char *thestart, size_t thelen);
+
+  // output will be cleared before the conversion
+  virtual void convert (text_t &output, status_t &status);
+
+  // will treat the text_t as a 8-bit string and convert
+  // it to a 16-bit string using the about convert method.
+  text_t convert (const text_t &t);
+
+protected:
+  char *start;
+  size_t len;
+};
+
+// to get something which will do the conversion
+// to ascii declare a (non global!) instance like
+// this
+// inconvertclass ascii2text_t;
+
+#if defined(GSDL_USE_IOS_H)
+#include <iostream.h> // darwin doesn't have ostream.h...
+#else
+#include <ostream>
+#endif
+
+// Convert from a text_t class to a char stream
+// This default version assumes the output is a ascii
+// character array. If you set the output stream you
+// can use this class to output to a stream using the
+// << operator. The << operator can also be conveniently
+// used to set the output stream by doing something like
+//
+// cout << text_t2ascii << textstr << anothertextstr;
+//
+// this class assumes that the input text doesn't change
+// while the conversion takes place
+class outconvertclass : public convertclass
+{
+public:
+  outconvertclass ();
+  void reset ();
+  void setinput (text_t *theinput);
+  // note that convert does not null-terminate the
+  // output array of characters
+  virtual void convert (char *output, size_t maxlen, 
+			size_t &len, status_t &status);
+
+  // will convert the 16-bit string to a 8-bit stream
+  // and place the result in a text_t. This method uses
+  // the above convert function.
+  text_t convert (const text_t &t);
+
+  void setostream (ostream *theouts);
+  ostream *getostream ();
+
+protected:
+  text_t *input;
+  text_t::iterator texthere; // only valid if input is valid
+
+  ostream *outs;
+};
+
+// to get something which will do the conversion
+// to text_t declare a (non global!) instance like
+// this
+// outconvertclass text_t2ascii;
+
+
+// stream operators for the output class
+outconvertclass &operator<< (ostream &theouts, outconvertclass &outconverter);
+outconvertclass &operator<< (outconvertclass &outconverter, const text_t &t);
+
+#endif
Index: /other-projects/trunk/greenorg/lib/unitool.c
===================================================================
--- /other-projects/trunk/greenorg/lib/unitool.c	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/unitool.c	(revision 14149)
@@ -0,0 +1,1756 @@
+#include "unitool.h"
+#include "sysfuncs.h"
+
+
+/* unicode_cat_data is a combination of the letter, digit, and
+ * space information in a form that is quick to look up.
+ * The information about each byte is stored in two bits
+ *
+ * 00 - neither letter, digit or space
+ * 01 - letter
+ * 10 - space
+ * 11 - digit
+ *
+ * You can test for letter | space by looking at the right
+ * column
+ */
+unsigned long *unicode_cat_data=NULL;
+
+
+typedef struct unidecompose {
+  unsigned short ch;
+  unsigned short str[3];
+} unidecompose;
+
+typedef struct unirelate {
+  unsigned short ch1;
+  unsigned short ch2;
+} unirelate;
+
+typedef struct unirange {
+  unsigned short first;
+  unsigned short last;
+} unirange;
+
+
+
+/* This decomposition data only includes canonical decompositional
+ * characters.  Any unused bytes are set to 0x0. */
+
+#define NUM_DECOMPOSE_INFO 1269
+static const unidecompose decompose_info[NUM_DECOMPOSE_INFO] = {
+  {0xC0,0x41,0x300,0x0}, {0xC1,0x41,0x301,0x0}, {0xC2,0x41,0x302,0x0}, 
+  {0xC3,0x41,0x303,0x0}, {0xC4,0x41,0x308,0x0}, {0xC5,0x41,0x30A,0x0}, 
+  {0xC7,0x43,0x327,0x0}, {0xC8,0x45,0x300,0x0}, {0xC9,0x45,0x301,0x0}, 
+  {0xCA,0x45,0x302,0x0}, {0xCB,0x45,0x308,0x0}, {0xCC,0x49,0x300,0x0}, 
+  {0xCD,0x49,0x301,0x0}, {0xCE,0x49,0x302,0x0}, {0xCF,0x49,0x308,0x0}, 
+  {0xD1,0x4E,0x303,0x0}, {0xD2,0x4F,0x300,0x0}, {0xD3,0x4F,0x301,0x0}, 
+  {0xD4,0x4F,0x302,0x0}, {0xD5,0x4F,0x303,0x0}, {0xD6,0x4F,0x308,0x0}, 
+  {0xD9,0x55,0x300,0x0}, {0xDA,0x55,0x301,0x0}, {0xDB,0x55,0x302,0x0}, 
+  {0xDC,0x55,0x308,0x0}, {0xDD,0x59,0x301,0x0}, {0xE0,0x61,0x300,0x0}, 
+  {0xE1,0x61,0x301,0x0}, {0xE2,0x61,0x302,0x0}, {0xE3,0x61,0x303,0x0}, 
+  {0xE4,0x61,0x308,0x0}, {0xE5,0x61,0x30A,0x0}, {0xE7,0x63,0x327,0x0}, 
+  {0xE8,0x65,0x300,0x0}, {0xE9,0x65,0x301,0x0}, {0xEA,0x65,0x302,0x0}, 
+  {0xEB,0x65,0x308,0x0}, {0xEC,0x69,0x300,0x0}, {0xED,0x69,0x301,0x0}, 
+  {0xEE,0x69,0x302,0x0}, {0xEF,0x69,0x308,0x0}, {0xF1,0x6E,0x303,0x0}, 
+  {0xF2,0x6F,0x300,0x0}, {0xF3,0x6F,0x301,0x0}, {0xF4,0x6F,0x302,0x0}, 
+  {0xF5,0x6F,0x303,0x0}, {0xF6,0x6F,0x308,0x0}, {0xF9,0x75,0x300,0x0}, 
+  {0xFA,0x75,0x301,0x0}, {0xFB,0x75,0x302,0x0}, {0xFC,0x75,0x308,0x0}, 
+  {0xFD,0x79,0x301,0x0}, {0xFF,0x79,0x308,0x0}, {0x100,0x41,0x304,0x0}, 
+  {0x101,0x61,0x304,0x0}, {0x102,0x41,0x306,0x0}, {0x103,0x61,0x306,0x0}, 
+  {0x104,0x41,0x328,0x0}, {0x105,0x61,0x328,0x0}, {0x106,0x43,0x301,0x0}, 
+  {0x107,0x63,0x301,0x0}, {0x108,0x43,0x302,0x0}, {0x109,0x63,0x302,0x0}, 
+  {0x10A,0x43,0x307,0x0}, {0x10B,0x63,0x307,0x0}, {0x10C,0x43,0x30C,0x0}, 
+  {0x10D,0x63,0x30C,0x0}, {0x10E,0x44,0x30C,0x0}, {0x10F,0x64,0x30C,0x0}, 
+  {0x112,0x45,0x304,0x0}, {0x113,0x65,0x304,0x0}, {0x114,0x45,0x306,0x0}, 
+  {0x115,0x65,0x306,0x0}, {0x116,0x45,0x307,0x0}, {0x117,0x65,0x307,0x0}, 
+  {0x118,0x45,0x328,0x0}, {0x119,0x65,0x328,0x0}, {0x11A,0x45,0x30C,0x0}, 
+  {0x11B,0x65,0x30C,0x0}, {0x11C,0x47,0x302,0x0}, {0x11D,0x67,0x302,0x0}, 
+  {0x11E,0x47,0x306,0x0}, {0x11F,0x67,0x306,0x0}, {0x120,0x47,0x307,0x0}, 
+  {0x121,0x67,0x307,0x0}, {0x122,0x47,0x327,0x0}, {0x123,0x67,0x327,0x0}, 
+  {0x124,0x48,0x302,0x0}, {0x125,0x68,0x302,0x0}, {0x128,0x49,0x303,0x0}, 
+  {0x129,0x69,0x303,0x0}, {0x12A,0x49,0x304,0x0}, {0x12B,0x69,0x304,0x0}, 
+  {0x12C,0x49,0x306,0x0}, {0x12D,0x69,0x306,0x0}, {0x12E,0x49,0x328,0x0}, 
+  {0x12F,0x69,0x328,0x0}, {0x130,0x49,0x307,0x0}, {0x134,0x4A,0x302,0x0}, 
+  {0x135,0x6A,0x302,0x0}, {0x136,0x4B,0x327,0x0}, {0x137,0x6B,0x327,0x0}, 
+  {0x139,0x4C,0x301,0x0}, {0x13A,0x6C,0x301,0x0}, {0x13B,0x4C,0x327,0x0}, 
+  {0x13C,0x6C,0x327,0x0}, {0x13D,0x4C,0x30C,0x0}, {0x13E,0x6C,0x30C,0x0}, 
+  {0x143,0x4E,0x301,0x0}, {0x144,0x6E,0x301,0x0}, {0x145,0x4E,0x327,0x0}, 
+  {0x146,0x6E,0x327,0x0}, {0x147,0x4E,0x30C,0x0}, {0x148,0x6E,0x30C,0x0}, 
+  {0x14C,0x4F,0x304,0x0}, {0x14D,0x6F,0x304,0x0}, {0x14E,0x4F,0x306,0x0}, 
+  {0x14F,0x6F,0x306,0x0}, {0x150,0x4F,0x30B,0x0}, {0x151,0x6F,0x30B,0x0}, 
+  {0x154,0x52,0x301,0x0}, {0x155,0x72,0x301,0x0}, {0x156,0x52,0x327,0x0}, 
+  {0x157,0x72,0x327,0x0}, {0x158,0x52,0x30C,0x0}, {0x159,0x72,0x30C,0x0}, 
+  {0x15A,0x53,0x301,0x0}, {0x15B,0x73,0x301,0x0}, {0x15C,0x53,0x302,0x0}, 
+  {0x15D,0x73,0x302,0x0}, {0x15E,0x53,0x327,0x0}, {0x15F,0x73,0x327,0x0}, 
+  {0x160,0x53,0x30C,0x0}, {0x161,0x73,0x30C,0x0}, {0x162,0x54,0x327,0x0}, 
+  {0x163,0x74,0x327,0x0}, {0x164,0x54,0x30C,0x0}, {0x165,0x74,0x30C,0x0}, 
+  {0x168,0x55,0x303,0x0}, {0x169,0x75,0x303,0x0}, {0x16A,0x55,0x304,0x0}, 
+  {0x16B,0x75,0x304,0x0}, {0x16C,0x55,0x306,0x0}, {0x16D,0x75,0x306,0x0}, 
+  {0x16E,0x55,0x30A,0x0}, {0x16F,0x75,0x30A,0x0}, {0x170,0x55,0x30B,0x0}, 
+  {0x171,0x75,0x30B,0x0}, {0x172,0x55,0x328,0x0}, {0x173,0x75,0x328,0x0}, 
+  {0x174,0x57,0x302,0x0}, {0x175,0x77,0x302,0x0}, {0x176,0x59,0x302,0x0}, 
+  {0x177,0x79,0x302,0x0}, {0x178,0x59,0x308,0x0}, {0x179,0x5A,0x301,0x0}, 
+  {0x17A,0x7A,0x301,0x0}, {0x17B,0x5A,0x307,0x0}, {0x17C,0x7A,0x307,0x0}, 
+  {0x17D,0x5A,0x30C,0x0}, {0x17E,0x7A,0x30C,0x0}, {0x1A0,0x4F,0x31B,0x0}, 
+  {0x1A1,0x6F,0x31B,0x0}, {0x1AF,0x55,0x31B,0x0}, {0x1B0,0x75,0x31B,0x0}, 
+  {0x1CD,0x41,0x30C,0x0}, {0x1CE,0x61,0x30C,0x0}, {0x1CF,0x49,0x30C,0x0}, 
+  {0x1D0,0x69,0x30C,0x0}, {0x1D1,0x4F,0x30C,0x0}, {0x1D2,0x6F,0x30C,0x0}, 
+  {0x1D3,0x55,0x30C,0x0}, {0x1D4,0x75,0x30C,0x0}, {0x1D5,0xDC,0x304,0x0}, 
+  {0x1D6,0xFC,0x304,0x0}, {0x1D7,0xDC,0x301,0x0}, {0x1D8,0xFC,0x301,0x0}, 
+  {0x1D9,0xDC,0x30C,0x0}, {0x1DA,0xFC,0x30C,0x0}, {0x1DB,0xDC,0x300,0x0}, 
+  {0x1DC,0xFC,0x300,0x0}, {0x1DE,0xC4,0x304,0x0}, {0x1DF,0xE4,0x304,0x0}, 
+  {0x1E0,0x41,0x307,0x304}, {0x1E1,0x61,0x307,0x304}, {0x1E2,0xC6,0x304,0x0}, 
+  {0x1E3,0xE6,0x304,0x0}, {0x1E6,0x47,0x30C,0x0}, {0x1E7,0x67,0x30C,0x0}, 
+  {0x1E8,0x4B,0x30C,0x0}, {0x1E9,0x6B,0x30C,0x0}, {0x1EA,0x4F,0x328,0x0}, 
+  {0x1EB,0x6F,0x328,0x0}, {0x1EC,0x1EA,0x304,0x0}, {0x1ED,0x1EB,0x304,0x0}, 
+  {0x1EE,0x1B7,0x30C,0x0}, {0x1EF,0x292,0x30C,0x0}, {0x1F0,0x6A,0x30C,0x0}, 
+  {0x1F4,0x47,0x301,0x0}, {0x1F5,0x67,0x301,0x0}, {0x1FA,0xC5,0x301,0x0}, 
+  {0x1FB,0xE5,0x301,0x0}, {0x1FC,0xC6,0x301,0x0}, {0x1FD,0xE6,0x301,0x0}, 
+  {0x1FE,0xD8,0x301,0x0}, {0x1FF,0xF8,0x301,0x0}, {0x200,0x41,0x30F,0x0}, 
+  {0x201,0x61,0x30F,0x0}, {0x202,0x41,0x311,0x0}, {0x203,0x61,0x311,0x0}, 
+  {0x204,0x45,0x30F,0x0}, {0x205,0x65,0x30F,0x0}, {0x206,0x45,0x311,0x0}, 
+  {0x207,0x65,0x311,0x0}, {0x208,0x49,0x30F,0x0}, {0x209,0x69,0x30F,0x0}, 
+  {0x20A,0x49,0x311,0x0}, {0x20B,0x69,0x311,0x0}, {0x20C,0x4F,0x30F,0x0}, 
+  {0x20D,0x6F,0x30F,0x0}, {0x20E,0x4F,0x311,0x0}, {0x20F,0x6F,0x311,0x0}, 
+  {0x210,0x52,0x30F,0x0}, {0x211,0x72,0x30F,0x0}, {0x212,0x52,0x311,0x0}, 
+  {0x213,0x72,0x311,0x0}, {0x214,0x55,0x30F,0x0}, {0x215,0x75,0x30F,0x0}, 
+  {0x216,0x55,0x311,0x0}, {0x217,0x75,0x311,0x0}, {0x310,0x306,0x307,0x0}, 
+  {0x340,0x300,0x0,0x0}, {0x341,0x301,0x0,0x0}, {0x343,0x313,0x0,0x0}, 
+  {0x344,0x308,0x30D,0x0}, {0x374,0x2B9,0x0,0x0}, {0x37E,0x3B,0x0,0x0}, 
+  {0x385,0xA8,0x30D,0x0}, {0x386,0x391,0x30D,0x0}, {0x387,0xB7,0x0,0x0}, 
+  {0x388,0x395,0x30D,0x0}, {0x389,0x397,0x30D,0x0}, {0x38A,0x399,0x30D,0x0}, 
+  {0x38C,0x39F,0x30D,0x0}, {0x38E,0x3A5,0x30D,0x0}, {0x38F,0x3A9,0x30D,0x0}, 
+  {0x390,0x3B9,0x344,0x0}, {0x3AA,0x399,0x308,0x0}, {0x3AB,0x3A5,0x308,0x0}, 
+  {0x3AC,0x3B1,0x30D,0x0}, {0x3AD,0x3B5,0x30D,0x0}, {0x3AE,0x3B7,0x30D,0x0}, 
+  {0x3AF,0x3B9,0x30D,0x0}, {0x3B0,0x3C5,0x344,0x0}, {0x3CA,0x3B9,0x308,0x0}, 
+  {0x3CB,0x3C5,0x308,0x0}, {0x3CC,0x3BF,0x30D,0x0}, {0x3CD,0x3C5,0x30D,0x0}, 
+  {0x3CE,0x3C9,0x30D,0x0}, {0x3D3,0x3D2,0x30D,0x0}, {0x3D4,0x3D2,0x308,0x0}, 
+  {0x401,0x415,0x308,0x0}, {0x403,0x413,0x301,0x0}, {0x407,0x406,0x308,0x0}, 
+  {0x40C,0x41A,0x301,0x0}, {0x40E,0x423,0x306,0x0}, {0x419,0x418,0x306,0x0}, 
+  {0x439,0x438,0x306,0x0}, {0x451,0x435,0x308,0x0}, {0x453,0x433,0x301,0x0}, 
+  {0x457,0x456,0x308,0x0}, {0x45C,0x43A,0x301,0x0}, {0x45E,0x443,0x306,0x0}, 
+  {0x476,0x474,0x30F,0x0}, {0x477,0x475,0x30F,0x0}, {0x4C1,0x416,0x306,0x0}, 
+  {0x4C2,0x436,0x306,0x0}, {0x4D0,0x410,0x306,0x0}, {0x4D1,0x430,0x306,0x0}, 
+  {0x4D2,0x410,0x308,0x0}, {0x4D3,0x430,0x308,0x0}, {0x4D6,0x415,0x306,0x0}, 
+  {0x4D7,0x435,0x306,0x0}, {0x4DA,0x4D8,0x308,0x0}, {0x4DB,0x4D9,0x308,0x0}, 
+  {0x4DC,0x416,0x308,0x0}, {0x4DD,0x436,0x308,0x0}, {0x4DE,0x417,0x308,0x0}, 
+  {0x4DF,0x437,0x308,0x0}, {0x4E2,0x418,0x304,0x0}, {0x4E3,0x438,0x304,0x0}, 
+  {0x4E4,0x418,0x308,0x0}, {0x4E5,0x438,0x308,0x0}, {0x4E6,0x41E,0x308,0x0}, 
+  {0x4E7,0x43E,0x308,0x0}, {0x4EA,0x4E8,0x308,0x0}, {0x4EB,0x4E9,0x308,0x0}, 
+  {0x4EE,0x423,0x304,0x0}, {0x4EF,0x443,0x304,0x0}, {0x4F0,0x423,0x308,0x0}, 
+  {0x4F1,0x443,0x308,0x0}, {0x4F2,0x423,0x30B,0x0}, {0x4F3,0x443,0x30B,0x0}, 
+  {0x4F4,0x427,0x308,0x0}, {0x4F5,0x447,0x308,0x0}, {0x4F8,0x42B,0x308,0x0}, 
+  {0x4F9,0x44B,0x308,0x0}, {0x929,0x928,0x93C,0x0}, {0x931,0x930,0x93C,0x0}, 
+  {0x934,0x933,0x93C,0x0}, {0x958,0x915,0x93C,0x0}, {0x959,0x916,0x93C,0x0}, 
+  {0x95A,0x917,0x93C,0x0}, {0x95B,0x91C,0x93C,0x0}, {0x95C,0x921,0x93C,0x0}, 
+  {0x95D,0x922,0x93C,0x0}, {0x95E,0x92B,0x93C,0x0}, {0x95F,0x92F,0x93C,0x0}, 
+  {0x9B0,0x9AC,0x9BC,0x0}, {0x9CB,0x9C7,0x9BE,0x0}, {0x9CC,0x9C7,0x9D7,0x0}, 
+  {0x9DC,0x9A1,0x9BC,0x0}, {0x9DD,0x9A2,0x9BC,0x0}, {0x9DF,0x9AF,0x9BC,0x0}, 
+  {0xA59,0xA16,0xA3C,0x0}, {0xA5A,0xA17,0xA3C,0x0}, {0xA5B,0xA1C,0xA3C,0x0}, 
+  {0xA5C,0xA21,0xA3C,0x0}, {0xA5E,0xA2B,0xA3C,0x0}, {0xB48,0xB47,0xB56,0x0}, 
+  {0xB4B,0xB47,0xB3E,0x0}, {0xB4C,0xB47,0xB57,0x0}, {0xB5C,0xB21,0xB3C,0x0}, 
+  {0xB5D,0xB22,0xB3C,0x0}, {0xB5F,0xB2F,0xB3C,0x0}, {0xB94,0xB92,0xBD7,0x0}, 
+  {0xBCA,0xBC6,0xBBE,0x0}, {0xBCB,0xBC7,0xBBE,0x0}, {0xBCC,0xBC6,0xBD7,0x0}, 
+  {0xC48,0xC46,0xC56,0x0}, {0xCC0,0xCBF,0xCD5,0x0}, {0xCC7,0xCC6,0xCD5,0x0}, 
+  {0xCC8,0xCC6,0xCD6,0x0}, {0xCCA,0xCC6,0xCC2,0x0}, {0xCCB,0xCC6,0xCC2,0xCD5}, 
+  {0xD4A,0xD46,0xD3E,0x0}, {0xD4B,0xD47,0xD3E,0x0}, {0xD4C,0xD46,0xD57,0x0}, 
+  {0xE33,0xE4D,0xE32,0x0}, {0xEB3,0xECD,0xEB2,0x0}, {0xF43,0xF42,0xFB7,0x0}, 
+  {0xF4D,0xF4C,0xFB7,0x0}, {0xF52,0xF51,0xFB7,0x0}, {0xF57,0xF56,0xFB7,0x0}, 
+  {0xF5C,0xF5B,0xFB7,0x0}, {0xF69,0xF40,0xFB5,0x0}, {0xF73,0xF72,0xF71,0x0}, 
+  {0xF75,0xF71,0xF74,0x0}, {0xF76,0xFB2,0xF80,0x0}, {0xF77,0xF76,0xF71,0x0}, 
+  {0xF78,0xFB3,0xF80,0x0}, {0xF79,0xF78,0xF71,0x0}, {0xF81,0xF80,0xF71,0x0}, 
+  {0xF93,0xF92,0xFB7,0x0}, {0xF9D,0xF9C,0xFB7,0x0}, {0xFA2,0xFA1,0xFB7,0x0}, 
+  {0xFA7,0xFA6,0xFB7,0x0}, {0xFAC,0xFAB,0xFB7,0x0}, {0xFB9,0xF90,0xFB5,0x0}, 
+  {0x1E00,0x41,0x325,0x0}, {0x1E01,0x61,0x325,0x0}, {0x1E02,0x42,0x307,0x0}, 
+  {0x1E03,0x62,0x307,0x0}, {0x1E04,0x42,0x323,0x0}, {0x1E05,0x62,0x323,0x0}, 
+  {0x1E06,0x42,0x331,0x0}, {0x1E07,0x62,0x331,0x0}, {0x1E08,0xC7,0x301,0x0}, 
+  {0x1E09,0xE7,0x301,0x0}, {0x1E0A,0x44,0x307,0x0}, {0x1E0B,0x64,0x307,0x0}, 
+  {0x1E0C,0x44,0x323,0x0}, {0x1E0D,0x64,0x323,0x0}, {0x1E0E,0x44,0x331,0x0}, 
+  {0x1E0F,0x64,0x331,0x0}, {0x1E10,0x44,0x327,0x0}, {0x1E11,0x64,0x327,0x0}, 
+  {0x1E12,0x44,0x32D,0x0}, {0x1E13,0x64,0x32D,0x0}, {0x1E14,0x112,0x300,0x0}, 
+  {0x1E15,0x113,0x300,0x0}, {0x1E16,0x112,0x301,0x0}, {0x1E17,0x113,0x301,0x0}, 
+  {0x1E18,0x45,0x32D,0x0}, {0x1E19,0x65,0x32D,0x0}, {0x1E1A,0x45,0x330,0x0}, 
+  {0x1E1B,0x65,0x330,0x0}, {0x1E1C,0x114,0x327,0x0}, {0x1E1D,0x115,0x327,0x0}, 
+  {0x1E1E,0x46,0x307,0x0}, {0x1E1F,0x66,0x307,0x0}, {0x1E20,0x47,0x304,0x0}, 
+  {0x1E21,0x67,0x304,0x0}, {0x1E22,0x48,0x307,0x0}, {0x1E23,0x68,0x307,0x0}, 
+  {0x1E24,0x48,0x323,0x0}, {0x1E25,0x68,0x323,0x0}, {0x1E26,0x48,0x308,0x0}, 
+  {0x1E27,0x68,0x308,0x0}, {0x1E28,0x48,0x327,0x0}, {0x1E29,0x68,0x327,0x0}, 
+  {0x1E2A,0x48,0x32E,0x0}, {0x1E2B,0x68,0x32E,0x0}, {0x1E2C,0x49,0x330,0x0}, 
+  {0x1E2D,0x69,0x330,0x0}, {0x1E2E,0xCF,0x301,0x0}, {0x1E2F,0xEF,0x301,0x0}, 
+  {0x1E30,0x4B,0x301,0x0}, {0x1E31,0x6B,0x301,0x0}, {0x1E32,0x4B,0x323,0x0}, 
+  {0x1E33,0x6B,0x323,0x0}, {0x1E34,0x4B,0x331,0x0}, {0x1E35,0x6B,0x331,0x0}, 
+  {0x1E36,0x4C,0x323,0x0}, {0x1E37,0x6C,0x323,0x0}, {0x1E38,0x1E36,0x304,0x0}, 
+  {0x1E39,0x1E37,0x304,0x0}, {0x1E3A,0x4C,0x331,0x0}, {0x1E3B,0x6C,0x331,0x0}, 
+  {0x1E3C,0x4C,0x32D,0x0}, {0x1E3D,0x6C,0x32D,0x0}, {0x1E3E,0x4D,0x301,0x0}, 
+  {0x1E3F,0x6D,0x301,0x0}, {0x1E40,0x4D,0x307,0x0}, {0x1E41,0x6D,0x307,0x0}, 
+  {0x1E42,0x4D,0x323,0x0}, {0x1E43,0x6D,0x323,0x0}, {0x1E44,0x4E,0x307,0x0}, 
+  {0x1E45,0x6E,0x307,0x0}, {0x1E46,0x4E,0x323,0x0}, {0x1E47,0x6E,0x323,0x0}, 
+  {0x1E48,0x4E,0x331,0x0}, {0x1E49,0x6E,0x331,0x0}, {0x1E4A,0x4E,0x32D,0x0}, 
+  {0x1E4B,0x6E,0x32D,0x0}, {0x1E4C,0xD5,0x301,0x0}, {0x1E4D,0xF5,0x301,0x0}, 
+  {0x1E4E,0xD5,0x308,0x0}, {0x1E4F,0xF5,0x308,0x0}, {0x1E50,0x14C,0x300,0x0}, 
+  {0x1E51,0x14D,0x300,0x0}, {0x1E52,0x14C,0x301,0x0}, {0x1E53,0x14D,0x301,0x0}, 
+  {0x1E54,0x50,0x301,0x0}, {0x1E55,0x70,0x301,0x0}, {0x1E56,0x50,0x307,0x0}, 
+  {0x1E57,0x70,0x307,0x0}, {0x1E58,0x52,0x307,0x0}, {0x1E59,0x72,0x307,0x0}, 
+  {0x1E5A,0x52,0x323,0x0}, {0x1E5B,0x72,0x323,0x0}, {0x1E5C,0x1E5A,0x304,0x0}, 
+  {0x1E5D,0x1E5B,0x304,0x0}, {0x1E5E,0x52,0x331,0x0}, {0x1E5F,0x72,0x331,0x0}, 
+  {0x1E60,0x53,0x307,0x0}, {0x1E61,0x73,0x307,0x0}, {0x1E62,0x53,0x323,0x0}, 
+  {0x1E63,0x73,0x323,0x0}, {0x1E64,0x15A,0x307,0x0}, {0x1E65,0x15B,0x307,0x0}, 
+  {0x1E66,0x160,0x307,0x0}, {0x1E67,0x161,0x307,0x0}, {0x1E68,0x1E62,0x307,0x0}, 
+  {0x1E69,0x1E63,0x307,0x0}, {0x1E6A,0x54,0x307,0x0}, {0x1E6B,0x74,0x307,0x0}, 
+  {0x1E6C,0x54,0x323,0x0}, {0x1E6D,0x74,0x323,0x0}, {0x1E6E,0x54,0x331,0x0}, 
+  {0x1E6F,0x74,0x331,0x0}, {0x1E70,0x54,0x32D,0x0}, {0x1E71,0x74,0x32D,0x0}, 
+  {0x1E72,0x55,0x324,0x0}, {0x1E73,0x75,0x324,0x0}, {0x1E74,0x55,0x330,0x0}, 
+  {0x1E75,0x75,0x330,0x0}, {0x1E76,0x55,0x32D,0x0}, {0x1E77,0x75,0x32D,0x0}, 
+  {0x1E78,0x168,0x301,0x0}, {0x1E79,0x169,0x301,0x0}, {0x1E7A,0x16A,0x308,0x0}, 
+  {0x1E7B,0x16B,0x308,0x0}, {0x1E7C,0x56,0x303,0x0}, {0x1E7D,0x76,0x303,0x0}, 
+  {0x1E7E,0x56,0x323,0x0}, {0x1E7F,0x76,0x323,0x0}, {0x1E80,0x57,0x300,0x0}, 
+  {0x1E81,0x77,0x300,0x0}, {0x1E82,0x57,0x301,0x0}, {0x1E83,0x77,0x301,0x0}, 
+  {0x1E84,0x57,0x308,0x0}, {0x1E85,0x77,0x308,0x0}, {0x1E86,0x57,0x307,0x0}, 
+  {0x1E87,0x77,0x307,0x0}, {0x1E88,0x57,0x323,0x0}, {0x1E89,0x77,0x323,0x0}, 
+  {0x1E8A,0x58,0x307,0x0}, {0x1E8B,0x78,0x307,0x0}, {0x1E8C,0x58,0x308,0x0}, 
+  {0x1E8D,0x78,0x308,0x0}, {0x1E8E,0x59,0x307,0x0}, {0x1E8F,0x79,0x307,0x0}, 
+  {0x1E90,0x5A,0x302,0x0}, {0x1E91,0x7A,0x302,0x0}, {0x1E92,0x5A,0x323,0x0}, 
+  {0x1E93,0x7A,0x323,0x0}, {0x1E94,0x5A,0x331,0x0}, {0x1E95,0x7A,0x331,0x0}, 
+  {0x1E96,0x68,0x331,0x0}, {0x1E97,0x74,0x308,0x0}, {0x1E98,0x77,0x30A,0x0}, 
+  {0x1E99,0x79,0x30A,0x0}, {0x1E9B,0x17F,0x307,0x0}, {0x1EA0,0x41,0x323,0x0}, 
+  {0x1EA1,0x61,0x323,0x0}, {0x1EA2,0x41,0x309,0x0}, {0x1EA3,0x61,0x309,0x0}, 
+  {0x1EA4,0xC2,0x301,0x0}, {0x1EA5,0xE2,0x301,0x0}, {0x1EA6,0xC2,0x300,0x0}, 
+  {0x1EA7,0xE2,0x300,0x0}, {0x1EA8,0xC2,0x309,0x0}, {0x1EA9,0xE2,0x309,0x0}, 
+  {0x1EAA,0xC2,0x303,0x0}, {0x1EAB,0xE2,0x303,0x0}, {0x1EAC,0xC2,0x323,0x0}, 
+  {0x1EAD,0xE2,0x323,0x0}, {0x1EAE,0x102,0x301,0x0}, {0x1EAF,0x103,0x301,0x0}, 
+  {0x1EB0,0x102,0x300,0x0}, {0x1EB1,0x103,0x300,0x0}, {0x1EB2,0x102,0x309,0x0}, 
+  {0x1EB3,0x103,0x309,0x0}, {0x1EB4,0x102,0x303,0x0}, {0x1EB5,0x103,0x303,0x0}, 
+  {0x1EB6,0x102,0x323,0x0}, {0x1EB7,0x103,0x323,0x0}, {0x1EB8,0x45,0x323,0x0}, 
+  {0x1EB9,0x65,0x323,0x0}, {0x1EBA,0x45,0x309,0x0}, {0x1EBB,0x65,0x309,0x0}, 
+  {0x1EBC,0x45,0x303,0x0}, {0x1EBD,0x65,0x303,0x0}, {0x1EBE,0xCA,0x301,0x0}, 
+  {0x1EBF,0xEA,0x301,0x0}, {0x1EC0,0xCA,0x300,0x0}, {0x1EC1,0xEA,0x300,0x0}, 
+  {0x1EC2,0xCA,0x309,0x0}, {0x1EC3,0xEA,0x309,0x0}, {0x1EC4,0xCA,0x303,0x0}, 
+  {0x1EC5,0xEA,0x303,0x0}, {0x1EC6,0xCA,0x323,0x0}, {0x1EC7,0xEA,0x323,0x0}, 
+  {0x1EC8,0x49,0x309,0x0}, {0x1EC9,0x69,0x309,0x0}, {0x1ECA,0x49,0x323,0x0}, 
+  {0x1ECB,0x69,0x323,0x0}, {0x1ECC,0x4F,0x323,0x0}, {0x1ECD,0x6F,0x323,0x0}, 
+  {0x1ECE,0x4F,0x309,0x0}, {0x1ECF,0x6F,0x309,0x0}, {0x1ED0,0xD4,0x301,0x0}, 
+  {0x1ED1,0xF4,0x301,0x0}, {0x1ED2,0xD4,0x300,0x0}, {0x1ED3,0xF4,0x300,0x0}, 
+  {0x1ED4,0xD4,0x309,0x0}, {0x1ED5,0xF4,0x309,0x0}, {0x1ED6,0xD4,0x303,0x0}, 
+  {0x1ED7,0xF4,0x303,0x0}, {0x1ED8,0xD4,0x323,0x0}, {0x1ED9,0xF4,0x323,0x0}, 
+  {0x1EDA,0x1A0,0x301,0x0}, {0x1EDB,0x1A1,0x301,0x0}, {0x1EDC,0x1A0,0x300,0x0}, 
+  {0x1EDD,0x1A1,0x300,0x0}, {0x1EDE,0x1A0,0x309,0x0}, {0x1EDF,0x1A1,0x309,0x0}, 
+  {0x1EE0,0x1A0,0x303,0x0}, {0x1EE1,0x1A1,0x303,0x0}, {0x1EE2,0x1A0,0x323,0x0}, 
+  {0x1EE3,0x1A1,0x323,0x0}, {0x1EE4,0x55,0x323,0x0}, {0x1EE5,0x75,0x323,0x0}, 
+  {0x1EE6,0x55,0x309,0x0}, {0x1EE7,0x75,0x309,0x0}, {0x1EE8,0x1AF,0x301,0x0}, 
+  {0x1EE9,0x1B0,0x301,0x0}, {0x1EEA,0x1AF,0x300,0x0}, {0x1EEB,0x1B0,0x300,0x0}, 
+  {0x1EEC,0x1AF,0x309,0x0}, {0x1EED,0x1B0,0x309,0x0}, {0x1EEE,0x1AF,0x303,0x0}, 
+  {0x1EEF,0x1B0,0x303,0x0}, {0x1EF0,0x1AF,0x323,0x0}, {0x1EF1,0x1B0,0x323,0x0}, 
+  {0x1EF2,0x59,0x300,0x0}, {0x1EF3,0x79,0x300,0x0}, {0x1EF4,0x59,0x323,0x0}, 
+  {0x1EF5,0x79,0x323,0x0}, {0x1EF6,0x59,0x309,0x0}, {0x1EF7,0x79,0x309,0x0}, 
+  {0x1EF8,0x59,0x303,0x0}, {0x1EF9,0x79,0x303,0x0}, {0x1F00,0x3B1,0x313,0x0}, 
+  {0x1F01,0x3B1,0x314,0x0}, {0x1F02,0x1F00,0x300,0x0}, {0x1F03,0x1F01,0x300,0x0}, 
+  {0x1F04,0x1F00,0x301,0x0}, {0x1F05,0x1F01,0x301,0x0}, {0x1F06,0x1F00,0x342,0x0}, 
+  {0x1F07,0x1F01,0x342,0x0}, {0x1F08,0x391,0x313,0x0}, {0x1F09,0x391,0x314,0x0}, 
+  {0x1F0A,0x1F08,0x300,0x0}, {0x1F0B,0x1F09,0x300,0x0}, {0x1F0C,0x1F08,0x301,0x0}, 
+  {0x1F0D,0x1F09,0x301,0x0}, {0x1F0E,0x1F08,0x342,0x0}, {0x1F0F,0x1F09,0x342,0x0}, 
+  {0x1F10,0x3B5,0x313,0x0}, {0x1F11,0x3B5,0x314,0x0}, {0x1F12,0x1F10,0x300,0x0}, 
+  {0x1F13,0x1F11,0x300,0x0}, {0x1F14,0x1F10,0x301,0x0}, {0x1F15,0x1F11,0x301,0x0}, 
+  {0x1F18,0x395,0x313,0x0}, {0x1F19,0x395,0x314,0x0}, {0x1F1A,0x1F18,0x300,0x0}, 
+  {0x1F1B,0x1F19,0x300,0x0}, {0x1F1C,0x1F18,0x301,0x0}, {0x1F1D,0x1F19,0x301,0x0}, 
+  {0x1F20,0x3B7,0x313,0x0}, {0x1F21,0x3B7,0x314,0x0}, {0x1F22,0x1F20,0x300,0x0}, 
+  {0x1F23,0x1F21,0x300,0x0}, {0x1F24,0x1F20,0x301,0x0}, {0x1F25,0x1F21,0x301,0x0}, 
+  {0x1F26,0x1F20,0x342,0x0}, {0x1F27,0x1F21,0x342,0x0}, {0x1F28,0x397,0x313,0x0}, 
+  {0x1F29,0x397,0x314,0x0}, {0x1F2A,0x1F28,0x300,0x0}, {0x1F2B,0x1F29,0x300,0x0}, 
+  {0x1F2C,0x1F28,0x301,0x0}, {0x1F2D,0x1F29,0x301,0x0}, {0x1F2E,0x1F28,0x342,0x0}, 
+  {0x1F2F,0x1F29,0x342,0x0}, {0x1F30,0x3B9,0x313,0x0}, {0x1F31,0x3B9,0x314,0x0}, 
+  {0x1F32,0x1F30,0x300,0x0}, {0x1F33,0x1F31,0x300,0x0}, {0x1F34,0x1F30,0x301,0x0}, 
+  {0x1F35,0x1F31,0x301,0x0}, {0x1F36,0x1F30,0x342,0x0}, {0x1F37,0x1F31,0x342,0x0}, 
+  {0x1F38,0x399,0x313,0x0}, {0x1F39,0x399,0x314,0x0}, {0x1F3A,0x1F38,0x300,0x0}, 
+  {0x1F3B,0x1F39,0x300,0x0}, {0x1F3C,0x1F38,0x301,0x0}, {0x1F3D,0x1F39,0x301,0x0}, 
+  {0x1F3E,0x1F38,0x342,0x0}, {0x1F3F,0x1F39,0x342,0x0}, {0x1F40,0x3BF,0x313,0x0}, 
+  {0x1F41,0x3BF,0x314,0x0}, {0x1F42,0x1F40,0x300,0x0}, {0x1F43,0x1F41,0x300,0x0}, 
+  {0x1F44,0x1F40,0x301,0x0}, {0x1F45,0x1F41,0x301,0x0}, {0x1F48,0x39F,0x313,0x0}, 
+  {0x1F49,0x39F,0x314,0x0}, {0x1F4A,0x1F48,0x300,0x0}, {0x1F4B,0x1F49,0x300,0x0}, 
+  {0x1F4C,0x1F48,0x301,0x0}, {0x1F4D,0x1F49,0x301,0x0}, {0x1F50,0x3C5,0x313,0x0}, 
+  {0x1F51,0x3C5,0x314,0x0}, {0x1F52,0x1F50,0x300,0x0}, {0x1F53,0x1F51,0x300,0x0}, 
+  {0x1F54,0x1F50,0x301,0x0}, {0x1F55,0x1F51,0x301,0x0}, {0x1F56,0x1F50,0x342,0x0}, 
+  {0x1F57,0x1F51,0x342,0x0}, {0x1F59,0x3A5,0x314,0x0}, {0x1F5B,0x1F59,0x300,0x0}, 
+  {0x1F5D,0x1F59,0x301,0x0}, {0x1F5F,0x1F59,0x342,0x0}, {0x1F60,0x3C9,0x313,0x0}, 
+  {0x1F61,0x3C9,0x314,0x0}, {0x1F62,0x1F60,0x300,0x0}, {0x1F63,0x1F61,0x300,0x0}, 
+  {0x1F64,0x1F60,0x301,0x0}, {0x1F65,0x1F61,0x301,0x0}, {0x1F66,0x1F60,0x342,0x0}, 
+  {0x1F67,0x1F61,0x342,0x0}, {0x1F68,0x3A9,0x313,0x0}, {0x1F69,0x3A9,0x314,0x0}, 
+  {0x1F6A,0x1F68,0x300,0x0}, {0x1F6B,0x1F69,0x300,0x0}, {0x1F6C,0x1F68,0x301,0x0}, 
+  {0x1F6D,0x1F69,0x301,0x0}, {0x1F6E,0x1F68,0x342,0x0}, {0x1F6F,0x1F69,0x342,0x0}, 
+  {0x1F70,0x3B1,0x300,0x0}, {0x1F71,0x3B1,0x301,0x0}, {0x1F72,0x3B5,0x300,0x0}, 
+  {0x1F73,0x3B5,0x301,0x0}, {0x1F74,0x3B7,0x300,0x0}, {0x1F75,0x3B7,0x301,0x0}, 
+  {0x1F76,0x3B9,0x300,0x0}, {0x1F77,0x3B9,0x301,0x0}, {0x1F78,0x3BF,0x300,0x0}, 
+  {0x1F79,0x3BF,0x301,0x0}, {0x1F7A,0x3C5,0x300,0x0}, {0x1F7B,0x3C5,0x301,0x0}, 
+  {0x1F7C,0x3C9,0x300,0x0}, {0x1F7D,0x3C9,0x301,0x0}, {0x1F80,0x1F00,0x345,0x0}, 
+  {0x1F81,0x1F01,0x345,0x0}, {0x1F82,0x1F02,0x345,0x0}, {0x1F83,0x1F03,0x345,0x0}, 
+  {0x1F84,0x1F04,0x345,0x0}, {0x1F85,0x1F05,0x345,0x0}, {0x1F86,0x1F06,0x345,0x0}, 
+  {0x1F87,0x1F07,0x345,0x0}, {0x1F88,0x1F08,0x345,0x0}, {0x1F89,0x1F09,0x345,0x0}, 
+  {0x1F8A,0x1F0A,0x345,0x0}, {0x1F8B,0x1F0B,0x345,0x0}, {0x1F8C,0x1F0C,0x345,0x0}, 
+  {0x1F8D,0x1F0D,0x345,0x0}, {0x1F8E,0x1F0E,0x345,0x0}, {0x1F8F,0x1F0F,0x345,0x0}, 
+  {0x1F90,0x1F20,0x345,0x0}, {0x1F91,0x1F21,0x345,0x0}, {0x1F92,0x1F22,0x345,0x0}, 
+  {0x1F93,0x1F23,0x345,0x0}, {0x1F94,0x1F24,0x345,0x0}, {0x1F95,0x1F25,0x345,0x0}, 
+  {0x1F96,0x1F26,0x345,0x0}, {0x1F97,0x1F27,0x345,0x0}, {0x1F98,0x1F28,0x345,0x0}, 
+  {0x1F99,0x1F29,0x345,0x0}, {0x1F9A,0x1F2A,0x345,0x0}, {0x1F9B,0x1F2B,0x345,0x0}, 
+  {0x1F9C,0x1F2C,0x345,0x0}, {0x1F9D,0x1F2D,0x345,0x0}, {0x1F9E,0x1F2E,0x345,0x0}, 
+  {0x1F9F,0x1F2F,0x345,0x0}, {0x1FA0,0x1F60,0x345,0x0}, {0x1FA1,0x1F61,0x345,0x0}, 
+  {0x1FA2,0x1F62,0x345,0x0}, {0x1FA3,0x1F63,0x345,0x0}, {0x1FA4,0x1F64,0x345,0x0}, 
+  {0x1FA5,0x1F65,0x345,0x0}, {0x1FA6,0x1F66,0x345,0x0}, {0x1FA7,0x1F67,0x345,0x0}, 
+  {0x1FA8,0x1F68,0x345,0x0}, {0x1FA9,0x1F69,0x345,0x0}, {0x1FAA,0x1F6A,0x345,0x0}, 
+  {0x1FAB,0x1F6B,0x345,0x0}, {0x1FAC,0x1F6C,0x345,0x0}, {0x1FAD,0x1F6D,0x345,0x0}, 
+  {0x1FAE,0x1F6E,0x345,0x0}, {0x1FAF,0x1F6F,0x345,0x0}, {0x1FB0,0x3B1,0x306,0x0}, 
+  {0x1FB1,0x3B1,0x304,0x0}, {0x1FB2,0x1F70,0x345,0x0}, {0x1FB3,0x3B1,0x345,0x0}, 
+  {0x1FB4,0x1F71,0x345,0x0}, {0x1FB6,0x3B1,0x342,0x0}, {0x1FB7,0x1FB6,0x345,0x0}, 
+  {0x1FB8,0x391,0x306,0x0}, {0x1FB9,0x391,0x304,0x0}, {0x1FBA,0x391,0x300,0x0}, 
+  {0x1FBB,0x391,0x301,0x0}, {0x1FBC,0x391,0x345,0x0}, {0x1FBE,0x3B9,0x0,0x0}, 
+  {0x1FC1,0xA8,0x342,0x0}, {0x1FC2,0x1F74,0x345,0x0}, {0x1FC3,0x3B7,0x345,0x0}, 
+  {0x1FC4,0x1F75,0x345,0x0}, {0x1FC6,0x3B7,0x342,0x0}, {0x1FC7,0x1FC6,0x345,0x0}, 
+  {0x1FC8,0x395,0x300,0x0}, {0x1FC9,0x395,0x301,0x0}, {0x1FCA,0x397,0x300,0x0}, 
+  {0x1FCB,0x397,0x301,0x0}, {0x1FCC,0x397,0x345,0x0}, {0x1FCD,0x1FBF,0x300,0x0}, 
+  {0x1FCE,0x1FBF,0x301,0x0}, {0x1FCF,0x1FBF,0x342,0x0}, {0x1FD0,0x3B9,0x306,0x0}, 
+  {0x1FD1,0x3B9,0x304,0x0}, {0x1FD2,0x3CA,0x300,0x0}, {0x1FD3,0x3CA,0x301,0x0}, 
+  {0x1FD6,0x3B9,0x342,0x0}, {0x1FD7,0x3CA,0x342,0x0}, {0x1FD8,0x399,0x306,0x0}, 
+  {0x1FD9,0x399,0x304,0x0}, {0x1FDA,0x399,0x300,0x0}, {0x1FDB,0x399,0x301,0x0}, 
+  {0x1FDD,0x1FFE,0x300,0x0}, {0x1FDE,0x1FFE,0x301,0x0}, {0x1FDF,0x1FFE,0x342,0x0}, 
+  {0x1FE0,0x3C5,0x306,0x0}, {0x1FE1,0x3C5,0x304,0x0}, {0x1FE2,0x3CB,0x300,0x0}, 
+  {0x1FE3,0x3CB,0x301,0x0}, {0x1FE4,0x3C1,0x313,0x0}, {0x1FE5,0x3C1,0x314,0x0}, 
+  {0x1FE6,0x3C5,0x342,0x0}, {0x1FE7,0x3CB,0x342,0x0}, {0x1FE8,0x3A5,0x306,0x0}, 
+  {0x1FE9,0x3A5,0x304,0x0}, {0x1FEA,0x3A5,0x300,0x0}, {0x1FEB,0x3A5,0x301,0x0}, 
+  {0x1FEC,0x3A1,0x314,0x0}, {0x1FED,0xA8,0x300,0x0}, {0x1FEE,0xA8,0x301,0x0}, 
+  {0x1FEF,0x60,0x0,0x0}, {0x1FF2,0x1F7C,0x345,0x0}, {0x1FF3,0x3C9,0x345,0x0}, 
+  {0x1FF4,0x1F79,0x345,0x0}, {0x1FF6,0x3C9,0x342,0x0}, {0x1FF7,0x1FF6,0x345,0x0}, 
+  {0x1FF8,0x39F,0x300,0x0}, {0x1FF9,0x39F,0x301,0x0}, {0x1FFA,0x3A9,0x300,0x0}, 
+  {0x1FFB,0x3A9,0x301,0x0}, {0x1FFC,0x3A9,0x345,0x0}, {0x1FFD,0xB4,0x0,0x0}, 
+  {0x2000,0x2002,0x0,0x0}, {0x2001,0x2003,0x0,0x0}, {0x2126,0x3A9,0x0,0x0}, 
+  {0x212A,0x4B,0x0,0x0}, {0x212B,0xC5,0x0,0x0}, {0x2204,0x2203,0x338,0x0}, 
+  {0x2209,0x2208,0x338,0x0}, {0x220C,0x220B,0x338,0x0}, {0x2224,0x2223,0x338,0x0}, 
+  {0x2226,0x2225,0x338,0x0}, {0x2241,0x7E,0x338,0x0}, {0x2244,0x2243,0x338,0x0}, 
+  {0x2247,0x2245,0x338,0x0}, {0x2249,0x2248,0x338,0x0}, {0x2260,0x3D,0x338,0x0}, 
+  {0x2262,0x2261,0x338,0x0}, {0x226D,0x224D,0x338,0x0}, {0x226E,0x3C,0x338,0x0}, 
+  {0x226F,0x3E,0x338,0x0}, {0x2270,0x2264,0x338,0x0}, {0x2271,0x2265,0x338,0x0}, 
+  {0x2274,0x2272,0x338,0x0}, {0x2275,0x2273,0x338,0x0}, {0x2278,0x2276,0x338,0x0}, 
+  {0x2279,0x2277,0x338,0x0}, {0x2280,0x227A,0x338,0x0}, {0x2281,0x227B,0x338,0x0}, 
+  {0x2284,0x2282,0x338,0x0}, {0x2285,0x2283,0x338,0x0}, {0x2288,0x2286,0x338,0x0}, 
+  {0x2289,0x2287,0x338,0x0}, {0x22AC,0x22A2,0x338,0x0}, {0x22AD,0x22A8,0x338,0x0}, 
+  {0x22AE,0x22A9,0x338,0x0}, {0x22AF,0x22AB,0x338,0x0}, {0x22E0,0x227C,0x338,0x0}, 
+  {0x22E1,0x227D,0x338,0x0}, {0x22E2,0x2291,0x338,0x0}, {0x22E3,0x2292,0x338,0x0}, 
+  {0x22EA,0x22B2,0x338,0x0}, {0x22EB,0x22B3,0x338,0x0}, {0x22EC,0x22B4,0x338,0x0}, 
+  {0x22ED,0x22B5,0x338,0x0}, {0x2329,0x3008,0x0,0x0}, {0x232A,0x3009,0x0,0x0}, 
+  {0x304C,0x304B,0x3099,0x0}, {0x304E,0x304D,0x3099,0x0}, {0x3050,0x304F,0x3099,0x0}, 
+  {0x3052,0x3051,0x3099,0x0}, {0x3054,0x3053,0x3099,0x0}, {0x3056,0x3055,0x3099,0x0}, 
+  {0x3058,0x3057,0x3099,0x0}, {0x305A,0x3059,0x3099,0x0}, {0x305C,0x305B,0x3099,0x0}, 
+  {0x305E,0x305D,0x3099,0x0}, {0x3060,0x305F,0x3099,0x0}, {0x3062,0x3061,0x3099,0x0}, 
+  {0x3065,0x3064,0x3099,0x0}, {0x3067,0x3066,0x3099,0x0}, {0x3069,0x3068,0x3099,0x0}, 
+  {0x3070,0x306F,0x3099,0x0}, {0x3071,0x306F,0x309A,0x0}, {0x3073,0x3072,0x3099,0x0}, 
+  {0x3074,0x3072,0x309A,0x0}, {0x3076,0x3075,0x3099,0x0}, {0x3077,0x3075,0x309A,0x0}, 
+  {0x3079,0x3078,0x3099,0x0}, {0x307A,0x3078,0x309A,0x0}, {0x307C,0x307B,0x3099,0x0}, 
+  {0x307D,0x307B,0x309A,0x0}, {0x3094,0x3046,0x3099,0x0}, {0x309E,0x309D,0x3099,0x0}, 
+  {0x30AC,0x30AB,0x3099,0x0}, {0x30AE,0x30AD,0x3099,0x0}, {0x30B0,0x30AF,0x3099,0x0}, 
+  {0x30B2,0x30B1,0x3099,0x0}, {0x30B4,0x30B3,0x3099,0x0}, {0x30B6,0x30B5,0x3099,0x0}, 
+  {0x30B8,0x30B7,0x3099,0x0}, {0x30BA,0x30B9,0x3099,0x0}, {0x30BC,0x30BB,0x3099,0x0}, 
+  {0x30BE,0x30BD,0x3099,0x0}, {0x30C0,0x30BF,0x3099,0x0}, {0x30C2,0x30C1,0x3099,0x0}, 
+  {0x30C5,0x30C4,0x3099,0x0}, {0x30C7,0x30C6,0x3099,0x0}, {0x30C9,0x30C8,0x3099,0x0}, 
+  {0x30D0,0x30CF,0x3099,0x0}, {0x30D1,0x30CF,0x309A,0x0}, {0x30D3,0x30D2,0x3099,0x0}, 
+  {0x30D4,0x30D2,0x309A,0x0}, {0x30D6,0x30D5,0x3099,0x0}, {0x30D7,0x30D5,0x309A,0x0}, 
+  {0x30D9,0x30D8,0x3099,0x0}, {0x30DA,0x30D8,0x309A,0x0}, {0x30DC,0x30DB,0x3099,0x0}, 
+  {0x30DD,0x30DB,0x309A,0x0}, {0x30F4,0x30A6,0x3099,0x0}, {0x30F7,0x30EF,0x3099,0x0}, 
+  {0x30F8,0x30F0,0x3099,0x0}, {0x30F9,0x30F1,0x3099,0x0}, {0x30FA,0x30F2,0x3099,0x0}, 
+  {0x30FE,0x30FD,0x3099,0x0}, {0xF900,0x8C48,0x0,0x0}, {0xF901,0x66F4,0x0,0x0}, 
+  {0xF902,0x8ECA,0x0,0x0}, {0xF903,0x8CC8,0x0,0x0}, {0xF904,0x6ED1,0x0,0x0}, 
+  {0xF905,0x4E32,0x0,0x0}, {0xF906,0x53E5,0x0,0x0}, {0xF907,0x9F9C,0x0,0x0}, 
+  {0xF908,0x9F9C,0x0,0x0}, {0xF909,0x5951,0x0,0x0}, {0xF90A,0x91D1,0x0,0x0}, 
+  {0xF90B,0x5587,0x0,0x0}, {0xF90C,0x5948,0x0,0x0}, {0xF90D,0x61F6,0x0,0x0}, 
+  {0xF90E,0x7669,0x0,0x0}, {0xF90F,0x7F85,0x0,0x0}, {0xF910,0x863F,0x0,0x0}, 
+  {0xF911,0x87BA,0x0,0x0}, {0xF912,0x88F8,0x0,0x0}, {0xF913,0x908F,0x0,0x0}, 
+  {0xF914,0x6A02,0x0,0x0}, {0xF915,0x6D1B,0x0,0x0}, {0xF916,0x70D9,0x0,0x0}, 
+  {0xF917,0x73DE,0x0,0x0}, {0xF918,0x843D,0x0,0x0}, {0xF919,0x916A,0x0,0x0}, 
+  {0xF91A,0x99F1,0x0,0x0}, {0xF91B,0x4E82,0x0,0x0}, {0xF91C,0x5375,0x0,0x0}, 
+  {0xF91D,0x6B04,0x0,0x0}, {0xF91E,0x721B,0x0,0x0}, {0xF91F,0x862D,0x0,0x0}, 
+  {0xF920,0x9E1E,0x0,0x0}, {0xF921,0x5D50,0x0,0x0}, {0xF922,0x6FEB,0x0,0x0}, 
+  {0xF923,0x85CD,0x0,0x0}, {0xF924,0x8964,0x0,0x0}, {0xF925,0x62C9,0x0,0x0}, 
+  {0xF926,0x81D8,0x0,0x0}, {0xF927,0x881F,0x0,0x0}, {0xF928,0x5ECA,0x0,0x0}, 
+  {0xF929,0x6717,0x0,0x0}, {0xF92A,0x6D6A,0x0,0x0}, {0xF92B,0x72FC,0x0,0x0}, 
+  {0xF92C,0x90CE,0x0,0x0}, {0xF92D,0x4F86,0x0,0x0}, {0xF92E,0x51B7,0x0,0x0}, 
+  {0xF92F,0x52DE,0x0,0x0}, {0xF930,0x64C4,0x0,0x0}, {0xF931,0x6AD3,0x0,0x0}, 
+  {0xF932,0x7210,0x0,0x0}, {0xF933,0x76E7,0x0,0x0}, {0xF934,0x8001,0x0,0x0}, 
+  {0xF935,0x8606,0x0,0x0}, {0xF936,0x865C,0x0,0x0}, {0xF937,0x8DEF,0x0,0x0}, 
+  {0xF938,0x9732,0x0,0x0}, {0xF939,0x9B6F,0x0,0x0}, {0xF93A,0x9DFA,0x0,0x0}, 
+  {0xF93B,0x788C,0x0,0x0}, {0xF93C,0x797F,0x0,0x0}, {0xF93D,0x7DA0,0x0,0x0}, 
+  {0xF93E,0x83C9,0x0,0x0}, {0xF93F,0x9304,0x0,0x0}, {0xF940,0x9E7F,0x0,0x0}, 
+  {0xF941,0x8AD6,0x0,0x0}, {0xF942,0x58DF,0x0,0x0}, {0xF943,0x5F04,0x0,0x0}, 
+  {0xF944,0x7C60,0x0,0x0}, {0xF945,0x807E,0x0,0x0}, {0xF946,0x7262,0x0,0x0}, 
+  {0xF947,0x78CA,0x0,0x0}, {0xF948,0x8CC2,0x0,0x0}, {0xF949,0x96F7,0x0,0x0}, 
+  {0xF94A,0x58D8,0x0,0x0}, {0xF94B,0x5C62,0x0,0x0}, {0xF94C,0x6A13,0x0,0x0}, 
+  {0xF94D,0x6DDA,0x0,0x0}, {0xF94E,0x6F0F,0x0,0x0}, {0xF94F,0x7D2F,0x0,0x0}, 
+  {0xF950,0x7E37,0x0,0x0}, {0xF951,0x96FB,0x0,0x0}, {0xF952,0x52D2,0x0,0x0}, 
+  {0xF953,0x808B,0x0,0x0}, {0xF954,0x51DC,0x0,0x0}, {0xF955,0x51CC,0x0,0x0}, 
+  {0xF956,0x7A1C,0x0,0x0}, {0xF957,0x7DBE,0x0,0x0}, {0xF958,0x83F1,0x0,0x0}, 
+  {0xF959,0x9675,0x0,0x0}, {0xF95A,0x8B80,0x0,0x0}, {0xF95B,0x62CF,0x0,0x0}, 
+  {0xF95C,0x6A02,0x0,0x0}, {0xF95D,0x8AFE,0x0,0x0}, {0xF95E,0x4E39,0x0,0x0}, 
+  {0xF95F,0x5BE7,0x0,0x0}, {0xF960,0x6012,0x0,0x0}, {0xF961,0x7387,0x0,0x0}, 
+  {0xF962,0x7570,0x0,0x0}, {0xF963,0x5317,0x0,0x0}, {0xF964,0x78FB,0x0,0x0}, 
+  {0xF965,0x4FBF,0x0,0x0}, {0xF966,0x5FA9,0x0,0x0}, {0xF967,0x4E0D,0x0,0x0}, 
+  {0xF968,0x6CCC,0x0,0x0}, {0xF969,0x6578,0x0,0x0}, {0xF96A,0x7D22,0x0,0x0}, 
+  {0xF96B,0x53C3,0x0,0x0}, {0xF96C,0x585E,0x0,0x0}, {0xF96D,0x7701,0x0,0x0}, 
+  {0xF96E,0x8449,0x0,0x0}, {0xF96F,0x8AAA,0x0,0x0}, {0xF970,0x6BBA,0x0,0x0}, 
+  {0xF971,0x8FB0,0x0,0x0}, {0xF972,0x6C88,0x0,0x0}, {0xF973,0x62FE,0x0,0x0}, 
+  {0xF974,0x82E5,0x0,0x0}, {0xF975,0x63A0,0x0,0x0}, {0xF976,0x7565,0x0,0x0}, 
+  {0xF977,0x4EAE,0x0,0x0}, {0xF978,0x5169,0x0,0x0}, {0xF979,0x51C9,0x0,0x0}, 
+  {0xF97A,0x6881,0x0,0x0}, {0xF97B,0x7CE7,0x0,0x0}, {0xF97C,0x826F,0x0,0x0}, 
+  {0xF97D,0x8AD2,0x0,0x0}, {0xF97E,0x91CF,0x0,0x0}, {0xF97F,0x52F5,0x0,0x0}, 
+  {0xF980,0x5442,0x0,0x0}, {0xF981,0x5973,0x0,0x0}, {0xF982,0x5EEC,0x0,0x0}, 
+  {0xF983,0x65C5,0x0,0x0}, {0xF984,0x6FFE,0x0,0x0}, {0xF985,0x792A,0x0,0x0}, 
+  {0xF986,0x95AD,0x0,0x0}, {0xF987,0x9A6A,0x0,0x0}, {0xF988,0x9E97,0x0,0x0}, 
+  {0xF989,0x9ECE,0x0,0x0}, {0xF98A,0x529B,0x0,0x0}, {0xF98B,0x66C6,0x0,0x0}, 
+  {0xF98C,0x6B77,0x0,0x0}, {0xF98D,0x8F62,0x0,0x0}, {0xF98E,0x5E74,0x0,0x0}, 
+  {0xF98F,0x6190,0x0,0x0}, {0xF990,0x6200,0x0,0x0}, {0xF991,0x649A,0x0,0x0}, 
+  {0xF992,0x6F23,0x0,0x0}, {0xF993,0x7149,0x0,0x0}, {0xF994,0x7489,0x0,0x0}, 
+  {0xF995,0x79CA,0x0,0x0}, {0xF996,0x7DF4,0x0,0x0}, {0xF997,0x806F,0x0,0x0}, 
+  {0xF998,0x8F26,0x0,0x0}, {0xF999,0x84EE,0x0,0x0}, {0xF99A,0x9023,0x0,0x0}, 
+  {0xF99B,0x934A,0x0,0x0}, {0xF99C,0x5217,0x0,0x0}, {0xF99D,0x52A3,0x0,0x0}, 
+  {0xF99E,0x54BD,0x0,0x0}, {0xF99F,0x70C8,0x0,0x0}, {0xF9A0,0x88C2,0x0,0x0}, 
+  {0xF9A1,0x8AAA,0x0,0x0}, {0xF9A2,0x5EC9,0x0,0x0}, {0xF9A3,0x5FF5,0x0,0x0}, 
+  {0xF9A4,0x637B,0x0,0x0}, {0xF9A5,0x6BAE,0x0,0x0}, {0xF9A6,0x7C3E,0x0,0x0}, 
+  {0xF9A7,0x7375,0x0,0x0}, {0xF9A8,0x4EE4,0x0,0x0}, {0xF9A9,0x56F9,0x0,0x0}, 
+  {0xF9AA,0x5BE7,0x0,0x0}, {0xF9AB,0x5DBA,0x0,0x0}, {0xF9AC,0x601C,0x0,0x0}, 
+  {0xF9AD,0x73B2,0x0,0x0}, {0xF9AE,0x7469,0x0,0x0}, {0xF9AF,0x7F9A,0x0,0x0}, 
+  {0xF9B0,0x8046,0x0,0x0}, {0xF9B1,0x9234,0x0,0x0}, {0xF9B2,0x96F6,0x0,0x0}, 
+  {0xF9B3,0x9748,0x0,0x0}, {0xF9B4,0x9818,0x0,0x0}, {0xF9B5,0x4F8B,0x0,0x0}, 
+  {0xF9B6,0x79AE,0x0,0x0}, {0xF9B7,0x91B4,0x0,0x0}, {0xF9B8,0x96B8,0x0,0x0}, 
+  {0xF9B9,0x60E1,0x0,0x0}, {0xF9BA,0x4E86,0x0,0x0}, {0xF9BB,0x50DA,0x0,0x0}, 
+  {0xF9BC,0x5BEE,0x0,0x0}, {0xF9BD,0x5C3F,0x0,0x0}, {0xF9BE,0x6599,0x0,0x0}, 
+  {0xF9BF,0x6A02,0x0,0x0}, {0xF9C0,0x71CE,0x0,0x0}, {0xF9C1,0x7642,0x0,0x0}, 
+  {0xF9C2,0x84FC,0x0,0x0}, {0xF9C3,0x907C,0x0,0x0}, {0xF9C4,0x9F8D,0x0,0x0}, 
+  {0xF9C5,0x6688,0x0,0x0}, {0xF9C6,0x962E,0x0,0x0}, {0xF9C7,0x5289,0x0,0x0}, 
+  {0xF9C8,0x677B,0x0,0x0}, {0xF9C9,0x67F3,0x0,0x0}, {0xF9CA,0x6D41,0x0,0x0}, 
+  {0xF9CB,0x6E9C,0x0,0x0}, {0xF9CC,0x7409,0x0,0x0}, {0xF9CD,0x7559,0x0,0x0}, 
+  {0xF9CE,0x786B,0x0,0x0}, {0xF9CF,0x7D10,0x0,0x0}, {0xF9D0,0x985E,0x0,0x0}, 
+  {0xF9D1,0x516D,0x0,0x0}, {0xF9D2,0x622E,0x0,0x0}, {0xF9D3,0x9678,0x0,0x0}, 
+  {0xF9D4,0x502B,0x0,0x0}, {0xF9D5,0x5D19,0x0,0x0}, {0xF9D6,0x6DEA,0x0,0x0}, 
+  {0xF9D7,0x8F2A,0x0,0x0}, {0xF9D8,0x5F8B,0x0,0x0}, {0xF9D9,0x6144,0x0,0x0}, 
+  {0xF9DA,0x6817,0x0,0x0}, {0xF9DB,0x7387,0x0,0x0}, {0xF9DC,0x9686,0x0,0x0}, 
+  {0xF9DD,0x5229,0x0,0x0}, {0xF9DE,0x540F,0x0,0x0}, {0xF9DF,0x5C65,0x0,0x0}, 
+  {0xF9E0,0x6613,0x0,0x0}, {0xF9E1,0x674E,0x0,0x0}, {0xF9E2,0x68A8,0x0,0x0}, 
+  {0xF9E3,0x6CE5,0x0,0x0}, {0xF9E4,0x7406,0x0,0x0}, {0xF9E5,0x75E2,0x0,0x0}, 
+  {0xF9E6,0x7F79,0x0,0x0}, {0xF9E7,0x88CF,0x0,0x0}, {0xF9E8,0x88E1,0x0,0x0}, 
+  {0xF9E9,0x91CC,0x0,0x0}, {0xF9EA,0x96E2,0x0,0x0}, {0xF9EB,0x533F,0x0,0x0}, 
+  {0xF9EC,0x6EBA,0x0,0x0}, {0xF9ED,0x541D,0x0,0x0}, {0xF9EE,0x71D0,0x0,0x0}, 
+  {0xF9EF,0x7498,0x0,0x0}, {0xF9F0,0x85FA,0x0,0x0}, {0xF9F1,0x96A3,0x0,0x0}, 
+  {0xF9F2,0x9C57,0x0,0x0}, {0xF9F3,0x9E9F,0x0,0x0}, {0xF9F4,0x6797,0x0,0x0}, 
+  {0xF9F5,0x6DCB,0x0,0x0}, {0xF9F6,0x81E8,0x0,0x0}, {0xF9F7,0x7ACB,0x0,0x0}, 
+  {0xF9F8,0x7B20,0x0,0x0}, {0xF9F9,0x7C92,0x0,0x0}, {0xF9FA,0x72C0,0x0,0x0}, 
+  {0xF9FB,0x7099,0x0,0x0}, {0xF9FC,0x8B58,0x0,0x0}, {0xF9FD,0x4EC0,0x0,0x0}, 
+  {0xF9FE,0x8336,0x0,0x0}, {0xF9FF,0x523A,0x0,0x0}, {0xFA00,0x5207,0x0,0x0}, 
+  {0xFA01,0x5EA6,0x0,0x0}, {0xFA02,0x62D3,0x0,0x0}, {0xFA03,0x7CD6,0x0,0x0}, 
+  {0xFA04,0x5B85,0x0,0x0}, {0xFA05,0x6D1E,0x0,0x0}, {0xFA06,0x66B4,0x0,0x0}, 
+  {0xFA07,0x8F3B,0x0,0x0}, {0xFA08,0x884C,0x0,0x0}, {0xFA09,0x964D,0x0,0x0}, 
+  {0xFA0A,0x898B,0x0,0x0}, {0xFA0B,0x5ED3,0x0,0x0}, {0xFA0C,0x5140,0x0,0x0}, 
+  {0xFA0D,0x55C0,0x0,0x0}, {0xFA10,0x585A,0x0,0x0}, {0xFA12,0x6674,0x0,0x0}, 
+  {0xFA15,0x51DE,0x0,0x0}, {0xFA16,0x732A,0x0,0x0}, {0xFA17,0x76CA,0x0,0x0}, 
+  {0xFA18,0x793C,0x0,0x0}, {0xFA19,0x795E,0x0,0x0}, {0xFA1A,0x7965,0x0,0x0}, 
+  {0xFA1B,0x798F,0x0,0x0}, {0xFA1C,0x9756,0x0,0x0}, {0xFA1D,0x7CBE,0x0,0x0}, 
+  {0xFA1E,0x7FBD,0x0,0x0}, {0xFA20,0x8612,0x0,0x0}, {0xFA22,0x8AF8,0x0,0x0}, 
+  {0xFA25,0x9038,0x0,0x0}, {0xFA26,0x90FD,0x0,0x0}, {0xFA2A,0x98EF,0x0,0x0}, 
+  {0xFA2B,0x98FC,0x0,0x0}, {0xFA2C,0x9928,0x0,0x0}, {0xFA2D,0x9DB4,0x0,0x0}, 
+  {0xFB1F,0x5F2,0x5B7,0x0}, {0xFB2A,0x5E9,0x5C1,0x0}, {0xFB2B,0x5E9,0x5C2,0x0}, 
+  {0xFB2C,0x5E9,0x5BC,0x5C1}, {0xFB2D,0x5E9,0x5BC,0x5C2}, {0xFB2E,0x5D0,0x5B7,0x0}, 
+  {0xFB2F,0x5D0,0x5B8,0x0}, {0xFB30,0x5D0,0x5BC,0x0}, {0xFB31,0x5D1,0x5BC,0x0}, 
+  {0xFB32,0x5D2,0x5BC,0x0}, {0xFB33,0x5D3,0x5BC,0x0}, {0xFB34,0x5D4,0x5BC,0x0}, 
+  {0xFB35,0x5D5,0x5BC,0x0}, {0xFB36,0x5D6,0x5BC,0x0}, {0xFB38,0x5D8,0x5BC,0x0}, 
+  {0xFB39,0x5D9,0x5BC,0x0}, {0xFB3A,0x5DA,0x5BC,0x0}, {0xFB3B,0x5DB,0x5BC,0x0}, 
+  {0xFB3C,0x5DC,0x5BC,0x0}, {0xFB3E,0x5DE,0x5BC,0x0}, {0xFB40,0x5E0,0x5BC,0x0}, 
+  {0xFB41,0x5E1,0x5BC,0x0}, {0xFB43,0x5E3,0x5BC,0x0}, {0xFB44,0x5E4,0x5BC,0x0}, 
+  {0xFB46,0x5E6,0x5BC,0x0}, {0xFB47,0x5E7,0x5BC,0x0}, {0xFB48,0x5E8,0x5BC,0x0}, 
+  {0xFB49,0x5E9,0x5BC,0x0}, {0xFB4A,0x5EA,0x5BC,0x0}, {0xFB4B,0x5D5,0x5B9,0x0}, 
+  {0xFB4C,0x5D1,0x5BF,0x0}, {0xFB4D,0x5DB,0x5BF,0x0}, {0xFB4E,0x5E4,0x5BF,0x0} 
+};
+
+
+/* All upper-case translations are included here */
+
+#define NUM_TOUPPER_INFO 677
+static const unirelate toupper_info[NUM_TOUPPER_INFO] = {
+  {0x61,0x41}, {0x62,0x42}, {0x63,0x43}, {0x64,0x44}, {0x65,0x45}, 
+  {0x66,0x46}, {0x67,0x47}, {0x68,0x48}, {0x69,0x49}, {0x6A,0x4A}, 
+  {0x6B,0x4B}, {0x6C,0x4C}, {0x6D,0x4D}, {0x6E,0x4E}, {0x6F,0x4F}, 
+  {0x70,0x50}, {0x71,0x51}, {0x72,0x52}, {0x73,0x53}, {0x74,0x54}, 
+  {0x75,0x55}, {0x76,0x56}, {0x77,0x57}, {0x78,0x58}, {0x79,0x59}, 
+  {0x7A,0x5A}, {0xE0,0xC0}, {0xE1,0xC1}, {0xE2,0xC2}, {0xE3,0xC3}, 
+  {0xE4,0xC4}, {0xE5,0xC5}, {0xE6,0xC6}, {0xE7,0xC7}, {0xE8,0xC8}, 
+  {0xE9,0xC9}, {0xEA,0xCA}, {0xEB,0xCB}, {0xEC,0xCC}, {0xED,0xCD}, 
+  {0xEE,0xCE}, {0xEF,0xCF}, {0xF0,0xD0}, {0xF1,0xD1}, {0xF2,0xD2}, 
+  {0xF3,0xD3}, {0xF4,0xD4}, {0xF5,0xD5}, {0xF6,0xD6}, {0xF8,0xD8}, 
+  {0xF9,0xD9}, {0xFA,0xDA}, {0xFB,0xDB}, {0xFC,0xDC}, {0xFD,0xDD}, 
+  {0xFE,0xDE}, {0xFF,0x178}, {0x101,0x100}, {0x103,0x102}, {0x105,0x104}, 
+  {0x107,0x106}, {0x109,0x108}, {0x10B,0x10A}, {0x10D,0x10C}, {0x10F,0x10E}, 
+  {0x111,0x110}, {0x113,0x112}, {0x115,0x114}, {0x117,0x116}, {0x119,0x118}, 
+  {0x11B,0x11A}, {0x11D,0x11C}, {0x11F,0x11E}, {0x121,0x120}, {0x123,0x122}, 
+  {0x125,0x124}, {0x127,0x126}, {0x129,0x128}, {0x12B,0x12A}, {0x12D,0x12C}, 
+  {0x12F,0x12E}, {0x131,0x49}, {0x133,0x132}, {0x135,0x134}, {0x137,0x136}, 
+  {0x13A,0x139}, {0x13C,0x13B}, {0x13E,0x13D}, {0x140,0x13F}, {0x142,0x141}, 
+  {0x144,0x143}, {0x146,0x145}, {0x148,0x147}, {0x14B,0x14A}, {0x14D,0x14C}, 
+  {0x14F,0x14E}, {0x151,0x150}, {0x153,0x152}, {0x155,0x154}, {0x157,0x156}, 
+  {0x159,0x158}, {0x15B,0x15A}, {0x15D,0x15C}, {0x15F,0x15E}, {0x161,0x160}, 
+  {0x163,0x162}, {0x165,0x164}, {0x167,0x166}, {0x169,0x168}, {0x16B,0x16A}, 
+  {0x16D,0x16C}, {0x16F,0x16E}, {0x171,0x170}, {0x173,0x172}, {0x175,0x174}, 
+  {0x177,0x176}, {0x17A,0x179}, {0x17C,0x17B}, {0x17E,0x17D}, {0x17F,0x53}, 
+  {0x183,0x182}, {0x185,0x184}, {0x188,0x187}, {0x18C,0x18B}, {0x192,0x191}, 
+  {0x199,0x198}, {0x1A1,0x1A0}, {0x1A3,0x1A2}, {0x1A5,0x1A4}, {0x1A8,0x1A7}, 
+  {0x1AD,0x1AC}, {0x1B0,0x1AF}, {0x1B4,0x1B3}, {0x1B6,0x1B5}, {0x1B9,0x1B8}, 
+  {0x1BD,0x1BC}, {0x1C5,0x1C4}, {0x1C6,0x1C4}, {0x1C8,0x1C7}, {0x1C9,0x1C7}, 
+  {0x1CB,0x1CA}, {0x1CC,0x1CA}, {0x1CE,0x1CD}, {0x1D0,0x1CF}, {0x1D2,0x1D1}, 
+  {0x1D4,0x1D3}, {0x1D6,0x1D5}, {0x1D8,0x1D7}, {0x1DA,0x1D9}, {0x1DC,0x1DB}, 
+  {0x1DD,0x18E}, {0x1DF,0x1DE}, {0x1E1,0x1E0}, {0x1E3,0x1E2}, {0x1E5,0x1E4}, 
+  {0x1E7,0x1E6}, {0x1E9,0x1E8}, {0x1EB,0x1EA}, {0x1ED,0x1EC}, {0x1EF,0x1EE}, 
+  {0x1F2,0x1F1}, {0x1F3,0x1F1}, {0x1F5,0x1F4}, {0x1FB,0x1FA}, {0x1FD,0x1FC}, 
+  {0x1FF,0x1FE}, {0x201,0x200}, {0x203,0x202}, {0x205,0x204}, {0x207,0x206}, 
+  {0x209,0x208}, {0x20B,0x20A}, {0x20D,0x20C}, {0x20F,0x20E}, {0x211,0x210}, 
+  {0x213,0x212}, {0x215,0x214}, {0x217,0x216}, {0x253,0x181}, {0x254,0x186}, 
+  {0x256,0x189}, {0x257,0x18A}, {0x259,0x18F}, {0x25B,0x190}, {0x260,0x193}, 
+  {0x263,0x194}, {0x268,0x197}, {0x269,0x196}, {0x26F,0x19C}, {0x272,0x19D}, 
+  {0x275,0x19F}, {0x283,0x1A9}, {0x288,0x1AE}, {0x28A,0x1B1}, {0x28B,0x1B2}, 
+  {0x292,0x1B7}, {0x3AC,0x386}, {0x3AD,0x388}, {0x3AE,0x389}, {0x3AF,0x38A}, 
+  {0x3B1,0x391}, {0x3B2,0x392}, {0x3B3,0x393}, {0x3B4,0x394}, {0x3B5,0x395}, 
+  {0x3B6,0x396}, {0x3B7,0x397}, {0x3B8,0x398}, {0x3B9,0x399}, {0x3BA,0x39A}, 
+  {0x3BB,0x39B}, {0x3BC,0x39C}, {0x3BD,0x39D}, {0x3BE,0x39E}, {0x3BF,0x39F}, 
+  {0x3C0,0x3A0}, {0x3C1,0x3A1}, {0x3C2,0x3A3}, {0x3C3,0x3A3}, {0x3C4,0x3A4}, 
+  {0x3C5,0x3A5}, {0x3C6,0x3A6}, {0x3C7,0x3A7}, {0x3C8,0x3A8}, {0x3C9,0x3A9}, 
+  {0x3CA,0x3AA}, {0x3CB,0x3AB}, {0x3CC,0x38C}, {0x3CD,0x38E}, {0x3CE,0x38F}, 
+  {0x3D0,0x392}, {0x3D1,0x398}, {0x3D5,0x3A6}, {0x3D6,0x3A0}, {0x3E3,0x3E2}, 
+  {0x3E5,0x3E4}, {0x3E7,0x3E6}, {0x3E9,0x3E8}, {0x3EB,0x3EA}, {0x3ED,0x3EC}, 
+  {0x3EF,0x3EE}, {0x3F0,0x39A}, {0x3F1,0x3A1}, {0x3F2,0x3A3}, {0x430,0x410}, 
+  {0x431,0x411}, {0x432,0x412}, {0x433,0x413}, {0x434,0x414}, {0x435,0x415}, 
+  {0x436,0x416}, {0x437,0x417}, {0x438,0x418}, {0x439,0x419}, {0x43A,0x41A}, 
+  {0x43B,0x41B}, {0x43C,0x41C}, {0x43D,0x41D}, {0x43E,0x41E}, {0x43F,0x41F}, 
+  {0x440,0x420}, {0x441,0x421}, {0x442,0x422}, {0x443,0x423}, {0x444,0x424}, 
+  {0x445,0x425}, {0x446,0x426}, {0x447,0x427}, {0x448,0x428}, {0x449,0x429}, 
+  {0x44A,0x42A}, {0x44B,0x42B}, {0x44C,0x42C}, {0x44D,0x42D}, {0x44E,0x42E}, 
+  {0x44F,0x42F}, {0x451,0x401}, {0x452,0x402}, {0x453,0x403}, {0x454,0x404}, 
+  {0x455,0x405}, {0x456,0x406}, {0x457,0x407}, {0x458,0x408}, {0x459,0x409}, 
+  {0x45A,0x40A}, {0x45B,0x40B}, {0x45C,0x40C}, {0x45E,0x40E}, {0x45F,0x40F}, 
+  {0x461,0x460}, {0x463,0x462}, {0x465,0x464}, {0x467,0x466}, {0x469,0x468}, 
+  {0x46B,0x46A}, {0x46D,0x46C}, {0x46F,0x46E}, {0x471,0x470}, {0x473,0x472}, 
+  {0x475,0x474}, {0x477,0x476}, {0x479,0x478}, {0x47B,0x47A}, {0x47D,0x47C}, 
+  {0x47F,0x47E}, {0x481,0x480}, {0x491,0x490}, {0x493,0x492}, {0x495,0x494}, 
+  {0x497,0x496}, {0x499,0x498}, {0x49B,0x49A}, {0x49D,0x49C}, {0x49F,0x49E}, 
+  {0x4A1,0x4A0}, {0x4A3,0x4A2}, {0x4A5,0x4A4}, {0x4A7,0x4A6}, {0x4A9,0x4A8}, 
+  {0x4AB,0x4AA}, {0x4AD,0x4AC}, {0x4AF,0x4AE}, {0x4B1,0x4B0}, {0x4B3,0x4B2}, 
+  {0x4B5,0x4B4}, {0x4B7,0x4B6}, {0x4B9,0x4B8}, {0x4BB,0x4BA}, {0x4BD,0x4BC}, 
+  {0x4BF,0x4BE}, {0x4C2,0x4C1}, {0x4C4,0x4C3}, {0x4C8,0x4C7}, {0x4CC,0x4CB}, 
+  {0x4D1,0x4D0}, {0x4D3,0x4D2}, {0x4D5,0x4D4}, {0x4D7,0x4D6}, {0x4D9,0x4D8}, 
+  {0x4DB,0x4DA}, {0x4DD,0x4DC}, {0x4DF,0x4DE}, {0x4E1,0x4E0}, {0x4E3,0x4E2}, 
+  {0x4E5,0x4E4}, {0x4E7,0x4E6}, {0x4E9,0x4E8}, {0x4EB,0x4EA}, {0x4EF,0x4EE}, 
+  {0x4F1,0x4F0}, {0x4F3,0x4F2}, {0x4F5,0x4F4}, {0x4F9,0x4F8}, {0x561,0x531}, 
+  {0x562,0x532}, {0x563,0x533}, {0x564,0x534}, {0x565,0x535}, {0x566,0x536}, 
+  {0x567,0x537}, {0x568,0x538}, {0x569,0x539}, {0x56A,0x53A}, {0x56B,0x53B}, 
+  {0x56C,0x53C}, {0x56D,0x53D}, {0x56E,0x53E}, {0x56F,0x53F}, {0x570,0x540}, 
+  {0x571,0x541}, {0x572,0x542}, {0x573,0x543}, {0x574,0x544}, {0x575,0x545}, 
+  {0x576,0x546}, {0x577,0x547}, {0x578,0x548}, {0x579,0x549}, {0x57A,0x54A}, 
+  {0x57B,0x54B}, {0x57C,0x54C}, {0x57D,0x54D}, {0x57E,0x54E}, {0x57F,0x54F}, 
+  {0x580,0x550}, {0x581,0x551}, {0x582,0x552}, {0x583,0x553}, {0x584,0x554}, 
+  {0x585,0x555}, {0x586,0x556}, {0x1E01,0x1E00}, {0x1E03,0x1E02}, {0x1E05,0x1E04}, 
+  {0x1E07,0x1E06}, {0x1E09,0x1E08}, {0x1E0B,0x1E0A}, {0x1E0D,0x1E0C}, {0x1E0F,0x1E0E}, 
+  {0x1E11,0x1E10}, {0x1E13,0x1E12}, {0x1E15,0x1E14}, {0x1E17,0x1E16}, {0x1E19,0x1E18}, 
+  {0x1E1B,0x1E1A}, {0x1E1D,0x1E1C}, {0x1E1F,0x1E1E}, {0x1E21,0x1E20}, {0x1E23,0x1E22}, 
+  {0x1E25,0x1E24}, {0x1E27,0x1E26}, {0x1E29,0x1E28}, {0x1E2B,0x1E2A}, {0x1E2D,0x1E2C}, 
+  {0x1E2F,0x1E2E}, {0x1E31,0x1E30}, {0x1E33,0x1E32}, {0x1E35,0x1E34}, {0x1E37,0x1E36}, 
+  {0x1E39,0x1E38}, {0x1E3B,0x1E3A}, {0x1E3D,0x1E3C}, {0x1E3F,0x1E3E}, {0x1E41,0x1E40}, 
+  {0x1E43,0x1E42}, {0x1E45,0x1E44}, {0x1E47,0x1E46}, {0x1E49,0x1E48}, {0x1E4B,0x1E4A}, 
+  {0x1E4D,0x1E4C}, {0x1E4F,0x1E4E}, {0x1E51,0x1E50}, {0x1E53,0x1E52}, {0x1E55,0x1E54}, 
+  {0x1E57,0x1E56}, {0x1E59,0x1E58}, {0x1E5B,0x1E5A}, {0x1E5D,0x1E5C}, {0x1E5F,0x1E5E}, 
+  {0x1E61,0x1E60}, {0x1E63,0x1E62}, {0x1E65,0x1E64}, {0x1E67,0x1E66}, {0x1E69,0x1E68}, 
+  {0x1E6B,0x1E6A}, {0x1E6D,0x1E6C}, {0x1E6F,0x1E6E}, {0x1E71,0x1E70}, {0x1E73,0x1E72}, 
+  {0x1E75,0x1E74}, {0x1E77,0x1E76}, {0x1E79,0x1E78}, {0x1E7B,0x1E7A}, {0x1E7D,0x1E7C}, 
+  {0x1E7F,0x1E7E}, {0x1E81,0x1E80}, {0x1E83,0x1E82}, {0x1E85,0x1E84}, {0x1E87,0x1E86}, 
+  {0x1E89,0x1E88}, {0x1E8B,0x1E8A}, {0x1E8D,0x1E8C}, {0x1E8F,0x1E8E}, {0x1E91,0x1E90}, 
+  {0x1E93,0x1E92}, {0x1E95,0x1E94}, {0x1E9B,0x1E60}, {0x1EA1,0x1EA0}, {0x1EA3,0x1EA2}, 
+  {0x1EA5,0x1EA4}, {0x1EA7,0x1EA6}, {0x1EA9,0x1EA8}, {0x1EAB,0x1EAA}, {0x1EAD,0x1EAC}, 
+  {0x1EAF,0x1EAE}, {0x1EB1,0x1EB0}, {0x1EB3,0x1EB2}, {0x1EB5,0x1EB4}, {0x1EB7,0x1EB6}, 
+  {0x1EB9,0x1EB8}, {0x1EBB,0x1EBA}, {0x1EBD,0x1EBC}, {0x1EBF,0x1EBE}, {0x1EC1,0x1EC0}, 
+  {0x1EC3,0x1EC2}, {0x1EC5,0x1EC4}, {0x1EC7,0x1EC6}, {0x1EC9,0x1EC8}, {0x1ECB,0x1ECA}, 
+  {0x1ECD,0x1ECC}, {0x1ECF,0x1ECE}, {0x1ED1,0x1ED0}, {0x1ED3,0x1ED2}, {0x1ED5,0x1ED4}, 
+  {0x1ED7,0x1ED6}, {0x1ED9,0x1ED8}, {0x1EDB,0x1EDA}, {0x1EDD,0x1EDC}, {0x1EDF,0x1EDE}, 
+  {0x1EE1,0x1EE0}, {0x1EE3,0x1EE2}, {0x1EE5,0x1EE4}, {0x1EE7,0x1EE6}, {0x1EE9,0x1EE8}, 
+  {0x1EEB,0x1EEA}, {0x1EED,0x1EEC}, {0x1EEF,0x1EEE}, {0x1EF1,0x1EF0}, {0x1EF3,0x1EF2}, 
+  {0x1EF5,0x1EF4}, {0x1EF7,0x1EF6}, {0x1EF9,0x1EF8}, {0x1F00,0x1F08}, {0x1F01,0x1F09}, 
+  {0x1F02,0x1F0A}, {0x1F03,0x1F0B}, {0x1F04,0x1F0C}, {0x1F05,0x1F0D}, {0x1F06,0x1F0E}, 
+  {0x1F07,0x1F0F}, {0x1F10,0x1F18}, {0x1F11,0x1F19}, {0x1F12,0x1F1A}, {0x1F13,0x1F1B}, 
+  {0x1F14,0x1F1C}, {0x1F15,0x1F1D}, {0x1F20,0x1F28}, {0x1F21,0x1F29}, {0x1F22,0x1F2A}, 
+  {0x1F23,0x1F2B}, {0x1F24,0x1F2C}, {0x1F25,0x1F2D}, {0x1F26,0x1F2E}, {0x1F27,0x1F2F}, 
+  {0x1F30,0x1F38}, {0x1F31,0x1F39}, {0x1F32,0x1F3A}, {0x1F33,0x1F3B}, {0x1F34,0x1F3C}, 
+  {0x1F35,0x1F3D}, {0x1F36,0x1F3E}, {0x1F37,0x1F3F}, {0x1F40,0x1F48}, {0x1F41,0x1F49}, 
+  {0x1F42,0x1F4A}, {0x1F43,0x1F4B}, {0x1F44,0x1F4C}, {0x1F45,0x1F4D}, {0x1F51,0x1F59}, 
+  {0x1F53,0x1F5B}, {0x1F55,0x1F5D}, {0x1F57,0x1F5F}, {0x1F60,0x1F68}, {0x1F61,0x1F69}, 
+  {0x1F62,0x1F6A}, {0x1F63,0x1F6B}, {0x1F64,0x1F6C}, {0x1F65,0x1F6D}, {0x1F66,0x1F6E}, 
+  {0x1F67,0x1F6F}, {0x1F70,0x1FBA}, {0x1F71,0x1FBB}, {0x1F72,0x1FC8}, {0x1F73,0x1FC9}, 
+  {0x1F74,0x1FCA}, {0x1F75,0x1FCB}, {0x1F76,0x1FDA}, {0x1F77,0x1FDB}, {0x1F78,0x1FF8}, 
+  {0x1F79,0x1FF9}, {0x1F7A,0x1FEA}, {0x1F7B,0x1FEB}, {0x1F7C,0x1FFA}, {0x1F7D,0x1FFB}, 
+  {0x1F80,0x1F88}, {0x1F81,0x1F89}, {0x1F82,0x1F8A}, {0x1F83,0x1F8B}, {0x1F84,0x1F8C}, 
+  {0x1F85,0x1F8D}, {0x1F86,0x1F8E}, {0x1F87,0x1F8F}, {0x1F90,0x1F98}, {0x1F91,0x1F99}, 
+  {0x1F92,0x1F9A}, {0x1F93,0x1F9B}, {0x1F94,0x1F9C}, {0x1F95,0x1F9D}, {0x1F96,0x1F9E}, 
+  {0x1F97,0x1F9F}, {0x1FA0,0x1FA8}, {0x1FA1,0x1FA9}, {0x1FA2,0x1FAA}, {0x1FA3,0x1FAB}, 
+  {0x1FA4,0x1FAC}, {0x1FA5,0x1FAD}, {0x1FA6,0x1FAE}, {0x1FA7,0x1FAF}, {0x1FB0,0x1FB8}, 
+  {0x1FB1,0x1FB9}, {0x1FB3,0x1FBC}, {0x1FC3,0x1FCC}, {0x1FD0,0x1FD8}, {0x1FD1,0x1FD9}, 
+  {0x1FE0,0x1FE8}, {0x1FE1,0x1FE9}, {0x1FE5,0x1FEC}, {0x1FF3,0x1FFC}, {0x2170,0x2160}, 
+  {0x2171,0x2161}, {0x2172,0x2162}, {0x2173,0x2163}, {0x2174,0x2164}, {0x2175,0x2165}, 
+  {0x2176,0x2166}, {0x2177,0x2167}, {0x2178,0x2168}, {0x2179,0x2169}, {0x217A,0x216A}, 
+  {0x217B,0x216B}, {0x217C,0x216C}, {0x217D,0x216D}, {0x217E,0x216E}, {0x217F,0x216F}, 
+  {0x24D0,0x24B6}, {0x24D1,0x24B7}, {0x24D2,0x24B8}, {0x24D3,0x24B9}, {0x24D4,0x24BA}, 
+  {0x24D5,0x24BB}, {0x24D6,0x24BC}, {0x24D7,0x24BD}, {0x24D8,0x24BE}, {0x24D9,0x24BF}, 
+  {0x24DA,0x24C0}, {0x24DB,0x24C1}, {0x24DC,0x24C2}, {0x24DD,0x24C3}, {0x24DE,0x24C4}, 
+  {0x24DF,0x24C5}, {0x24E0,0x24C6}, {0x24E1,0x24C7}, {0x24E2,0x24C8}, {0x24E3,0x24C9}, 
+  {0x24E4,0x24CA}, {0x24E5,0x24CB}, {0x24E6,0x24CC}, {0x24E7,0x24CD}, {0x24E8,0x24CE}, 
+  {0x24E9,0x24CF}, {0xFF41,0xFF21}, {0xFF42,0xFF22}, {0xFF43,0xFF23}, {0xFF44,0xFF24}, 
+  {0xFF45,0xFF25}, {0xFF46,0xFF26}, {0xFF47,0xFF27}, {0xFF48,0xFF28}, {0xFF49,0xFF29}, 
+  {0xFF4A,0xFF2A}, {0xFF4B,0xFF2B}, {0xFF4C,0xFF2C}, {0xFF4D,0xFF2D}, {0xFF4E,0xFF2E}, 
+  {0xFF4F,0xFF2F}, {0xFF50,0xFF30}, {0xFF51,0xFF31}, {0xFF52,0xFF32}, {0xFF53,0xFF33}, 
+  {0xFF54,0xFF34}, {0xFF55,0xFF35}, {0xFF56,0xFF36}, {0xFF57,0xFF37}, {0xFF58,0xFF38}, 
+  {0xFF59,0xFF39}, {0xFF5A,0xFF3A} 
+};
+
+
+
+/* All lower-case translations are included here */
+
+#define NUM_TOLOWER_INFO 705
+static const unirelate tolower_info[NUM_TOLOWER_INFO] = {
+  {0x41,0x61}, {0x42,0x62}, {0x43,0x63}, {0x44,0x64}, {0x45,0x65}, 
+  {0x46,0x66}, {0x47,0x67}, {0x48,0x68}, {0x49,0x69}, {0x4A,0x6A}, 
+  {0x4B,0x6B}, {0x4C,0x6C}, {0x4D,0x6D}, {0x4E,0x6E}, {0x4F,0x6F}, 
+  {0x50,0x70}, {0x51,0x71}, {0x52,0x72}, {0x53,0x73}, {0x54,0x74}, 
+  {0x55,0x75}, {0x56,0x76}, {0x57,0x77}, {0x58,0x78}, {0x59,0x79}, 
+  {0x5A,0x7A}, {0xC0,0xE0}, {0xC1,0xE1}, {0xC2,0xE2}, {0xC3,0xE3}, 
+  {0xC4,0xE4}, {0xC5,0xE5}, {0xC6,0xE6}, {0xC7,0xE7}, {0xC8,0xE8}, 
+  {0xC9,0xE9}, {0xCA,0xEA}, {0xCB,0xEB}, {0xCC,0xEC}, {0xCD,0xED}, 
+  {0xCE,0xEE}, {0xCF,0xEF}, {0xD0,0xF0}, {0xD1,0xF1}, {0xD2,0xF2}, 
+  {0xD3,0xF3}, {0xD4,0xF4}, {0xD5,0xF5}, {0xD6,0xF6}, {0xD8,0xF8}, 
+  {0xD9,0xF9}, {0xDA,0xFA}, {0xDB,0xFB}, {0xDC,0xFC}, {0xDD,0xFD}, 
+  {0xDE,0xFE}, {0x100,0x101}, {0x102,0x103}, {0x104,0x105}, {0x106,0x107}, 
+  {0x108,0x109}, {0x10A,0x10B}, {0x10C,0x10D}, {0x10E,0x10F}, {0x110,0x111}, 
+  {0x112,0x113}, {0x114,0x115}, {0x116,0x117}, {0x118,0x119}, {0x11A,0x11B}, 
+  {0x11C,0x11D}, {0x11E,0x11F}, {0x120,0x121}, {0x122,0x123}, {0x124,0x125}, 
+  {0x126,0x127}, {0x128,0x129}, {0x12A,0x12B}, {0x12C,0x12D}, {0x12E,0x12F}, 
+  {0x130,0x69}, {0x132,0x133}, {0x134,0x135}, {0x136,0x137}, {0x139,0x13A}, 
+  {0x13B,0x13C}, {0x13D,0x13E}, {0x13F,0x140}, {0x141,0x142}, {0x143,0x144}, 
+  {0x145,0x146}, {0x147,0x148}, {0x14A,0x14B}, {0x14C,0x14D}, {0x14E,0x14F}, 
+  {0x150,0x151}, {0x152,0x153}, {0x154,0x155}, {0x156,0x157}, {0x158,0x159}, 
+  {0x15A,0x15B}, {0x15C,0x15D}, {0x15E,0x15F}, {0x160,0x161}, {0x162,0x163}, 
+  {0x164,0x165}, {0x166,0x167}, {0x168,0x169}, {0x16A,0x16B}, {0x16C,0x16D}, 
+  {0x16E,0x16F}, {0x170,0x171}, {0x172,0x173}, {0x174,0x175}, {0x176,0x177}, 
+  {0x178,0xFF}, {0x179,0x17A}, {0x17B,0x17C}, {0x17D,0x17E}, {0x181,0x253}, 
+  {0x182,0x183}, {0x184,0x185}, {0x186,0x254}, {0x187,0x188}, {0x189,0x256}, 
+  {0x18A,0x257}, {0x18B,0x18C}, {0x18E,0x1DD}, {0x18F,0x259}, {0x190,0x25B}, 
+  {0x191,0x192}, {0x193,0x260}, {0x194,0x263}, {0x196,0x269}, {0x197,0x268}, 
+  {0x198,0x199}, {0x19C,0x26F}, {0x19D,0x272}, {0x19F,0x275}, {0x1A0,0x1A1}, 
+  {0x1A2,0x1A3}, {0x1A4,0x1A5}, {0x1A7,0x1A8}, {0x1A9,0x283}, {0x1AC,0x1AD}, 
+  {0x1AE,0x288}, {0x1AF,0x1B0}, {0x1B1,0x28A}, {0x1B2,0x28B}, {0x1B3,0x1B4}, 
+  {0x1B5,0x1B6}, {0x1B7,0x292}, {0x1B8,0x1B9}, {0x1BC,0x1BD}, {0x1C4,0x1C6}, 
+  {0x1C5,0x1C6}, {0x1C7,0x1C9}, {0x1C8,0x1C9}, {0x1CA,0x1CC}, {0x1CB,0x1CC}, 
+  {0x1CD,0x1CE}, {0x1CF,0x1D0}, {0x1D1,0x1D2}, {0x1D3,0x1D4}, {0x1D5,0x1D6}, 
+  {0x1D7,0x1D8}, {0x1D9,0x1DA}, {0x1DB,0x1DC}, {0x1DE,0x1DF}, {0x1E0,0x1E1}, 
+  {0x1E2,0x1E3}, {0x1E4,0x1E5}, {0x1E6,0x1E7}, {0x1E8,0x1E9}, {0x1EA,0x1EB}, 
+  {0x1EC,0x1ED}, {0x1EE,0x1EF}, {0x1F1,0x1F3}, {0x1F2,0x1F3}, {0x1F4,0x1F5}, 
+  {0x1FA,0x1FB}, {0x1FC,0x1FD}, {0x1FE,0x1FF}, {0x200,0x201}, {0x202,0x203}, 
+  {0x204,0x205}, {0x206,0x207}, {0x208,0x209}, {0x20A,0x20B}, {0x20C,0x20D}, 
+  {0x20E,0x20F}, {0x210,0x211}, {0x212,0x213}, {0x214,0x215}, {0x216,0x217}, 
+  {0x386,0x3AC}, {0x388,0x3AD}, {0x389,0x3AE}, {0x38A,0x3AF}, {0x38C,0x3CC}, 
+  {0x38E,0x3CD}, {0x38F,0x3CE}, {0x391,0x3B1}, {0x392,0x3B2}, {0x393,0x3B3}, 
+  {0x394,0x3B4}, {0x395,0x3B5}, {0x396,0x3B6}, {0x397,0x3B7}, {0x398,0x3B8}, 
+  {0x399,0x3B9}, {0x39A,0x3BA}, {0x39B,0x3BB}, {0x39C,0x3BC}, {0x39D,0x3BD}, 
+  {0x39E,0x3BE}, {0x39F,0x3BF}, {0x3A0,0x3C0}, {0x3A1,0x3C1}, {0x3A3,0x3C3}, 
+  {0x3A4,0x3C4}, {0x3A5,0x3C5}, {0x3A6,0x3C6}, {0x3A7,0x3C7}, {0x3A8,0x3C8}, 
+  {0x3A9,0x3C9}, {0x3AA,0x3CA}, {0x3AB,0x3CB}, {0x3E2,0x3E3}, {0x3E4,0x3E5}, 
+  {0x3E6,0x3E7}, {0x3E8,0x3E9}, {0x3EA,0x3EB}, {0x3EC,0x3ED}, {0x3EE,0x3EF}, 
+  {0x401,0x451}, {0x402,0x452}, {0x403,0x453}, {0x404,0x454}, {0x405,0x455}, 
+  {0x406,0x456}, {0x407,0x457}, {0x408,0x458}, {0x409,0x459}, {0x40A,0x45A}, 
+  {0x40B,0x45B}, {0x40C,0x45C}, {0x40E,0x45E}, {0x40F,0x45F}, {0x410,0x430}, 
+  {0x411,0x431}, {0x412,0x432}, {0x413,0x433}, {0x414,0x434}, {0x415,0x435}, 
+  {0x416,0x436}, {0x417,0x437}, {0x418,0x438}, {0x419,0x439}, {0x41A,0x43A}, 
+  {0x41B,0x43B}, {0x41C,0x43C}, {0x41D,0x43D}, {0x41E,0x43E}, {0x41F,0x43F}, 
+  {0x420,0x440}, {0x421,0x441}, {0x422,0x442}, {0x423,0x443}, {0x424,0x444}, 
+  {0x425,0x445}, {0x426,0x446}, {0x427,0x447}, {0x428,0x448}, {0x429,0x449}, 
+  {0x42A,0x44A}, {0x42B,0x44B}, {0x42C,0x44C}, {0x42D,0x44D}, {0x42E,0x44E}, 
+  {0x42F,0x44F}, {0x460,0x461}, {0x462,0x463}, {0x464,0x465}, {0x466,0x467}, 
+  {0x468,0x469}, {0x46A,0x46B}, {0x46C,0x46D}, {0x46E,0x46F}, {0x470,0x471}, 
+  {0x472,0x473}, {0x474,0x475}, {0x476,0x477}, {0x478,0x479}, {0x47A,0x47B}, 
+  {0x47C,0x47D}, {0x47E,0x47F}, {0x480,0x481}, {0x490,0x491}, {0x492,0x493}, 
+  {0x494,0x495}, {0x496,0x497}, {0x498,0x499}, {0x49A,0x49B}, {0x49C,0x49D}, 
+  {0x49E,0x49F}, {0x4A0,0x4A1}, {0x4A2,0x4A3}, {0x4A4,0x4A5}, {0x4A6,0x4A7}, 
+  {0x4A8,0x4A9}, {0x4AA,0x4AB}, {0x4AC,0x4AD}, {0x4AE,0x4AF}, {0x4B0,0x4B1}, 
+  {0x4B2,0x4B3}, {0x4B4,0x4B5}, {0x4B6,0x4B7}, {0x4B8,0x4B9}, {0x4BA,0x4BB}, 
+  {0x4BC,0x4BD}, {0x4BE,0x4BF}, {0x4C1,0x4C2}, {0x4C3,0x4C4}, {0x4C7,0x4C8}, 
+  {0x4CB,0x4CC}, {0x4D0,0x4D1}, {0x4D2,0x4D3}, {0x4D4,0x4D5}, {0x4D6,0x4D7}, 
+  {0x4D8,0x4D9}, {0x4DA,0x4DB}, {0x4DC,0x4DD}, {0x4DE,0x4DF}, {0x4E0,0x4E1}, 
+  {0x4E2,0x4E3}, {0x4E4,0x4E5}, {0x4E6,0x4E7}, {0x4E8,0x4E9}, {0x4EA,0x4EB}, 
+  {0x4EE,0x4EF}, {0x4F0,0x4F1}, {0x4F2,0x4F3}, {0x4F4,0x4F5}, {0x4F8,0x4F9}, 
+  {0x531,0x561}, {0x532,0x562}, {0x533,0x563}, {0x534,0x564}, {0x535,0x565}, 
+  {0x536,0x566}, {0x537,0x567}, {0x538,0x568}, {0x539,0x569}, {0x53A,0x56A}, 
+  {0x53B,0x56B}, {0x53C,0x56C}, {0x53D,0x56D}, {0x53E,0x56E}, {0x53F,0x56F}, 
+  {0x540,0x570}, {0x541,0x571}, {0x542,0x572}, {0x543,0x573}, {0x544,0x574}, 
+  {0x545,0x575}, {0x546,0x576}, {0x547,0x577}, {0x548,0x578}, {0x549,0x579}, 
+  {0x54A,0x57A}, {0x54B,0x57B}, {0x54C,0x57C}, {0x54D,0x57D}, {0x54E,0x57E}, 
+  {0x54F,0x57F}, {0x550,0x580}, {0x551,0x581}, {0x552,0x582}, {0x553,0x583}, 
+  {0x554,0x584}, {0x555,0x585}, {0x556,0x586}, {0x10A0,0x10D0}, {0x10A1,0x10D1}, 
+  {0x10A2,0x10D2}, {0x10A3,0x10D3}, {0x10A4,0x10D4}, {0x10A5,0x10D5}, {0x10A6,0x10D6}, 
+  {0x10A7,0x10D7}, {0x10A8,0x10D8}, {0x10A9,0x10D9}, {0x10AA,0x10DA}, {0x10AB,0x10DB}, 
+  {0x10AC,0x10DC}, {0x10AD,0x10DD}, {0x10AE,0x10DE}, {0x10AF,0x10DF}, {0x10B0,0x10E0}, 
+  {0x10B1,0x10E1}, {0x10B2,0x10E2}, {0x10B3,0x10E3}, {0x10B4,0x10E4}, {0x10B5,0x10E5}, 
+  {0x10B6,0x10E6}, {0x10B7,0x10E7}, {0x10B8,0x10E8}, {0x10B9,0x10E9}, {0x10BA,0x10EA}, 
+  {0x10BB,0x10EB}, {0x10BC,0x10EC}, {0x10BD,0x10ED}, {0x10BE,0x10EE}, {0x10BF,0x10EF}, 
+  {0x10C0,0x10F0}, {0x10C1,0x10F1}, {0x10C2,0x10F2}, {0x10C3,0x10F3}, {0x10C4,0x10F4}, 
+  {0x10C5,0x10F5}, {0x1E00,0x1E01}, {0x1E02,0x1E03}, {0x1E04,0x1E05}, {0x1E06,0x1E07}, 
+  {0x1E08,0x1E09}, {0x1E0A,0x1E0B}, {0x1E0C,0x1E0D}, {0x1E0E,0x1E0F}, {0x1E10,0x1E11}, 
+  {0x1E12,0x1E13}, {0x1E14,0x1E15}, {0x1E16,0x1E17}, {0x1E18,0x1E19}, {0x1E1A,0x1E1B}, 
+  {0x1E1C,0x1E1D}, {0x1E1E,0x1E1F}, {0x1E20,0x1E21}, {0x1E22,0x1E23}, {0x1E24,0x1E25}, 
+  {0x1E26,0x1E27}, {0x1E28,0x1E29}, {0x1E2A,0x1E2B}, {0x1E2C,0x1E2D}, {0x1E2E,0x1E2F}, 
+  {0x1E30,0x1E31}, {0x1E32,0x1E33}, {0x1E34,0x1E35}, {0x1E36,0x1E37}, {0x1E38,0x1E39}, 
+  {0x1E3A,0x1E3B}, {0x1E3C,0x1E3D}, {0x1E3E,0x1E3F}, {0x1E40,0x1E41}, {0x1E42,0x1E43}, 
+  {0x1E44,0x1E45}, {0x1E46,0x1E47}, {0x1E48,0x1E49}, {0x1E4A,0x1E4B}, {0x1E4C,0x1E4D}, 
+  {0x1E4E,0x1E4F}, {0x1E50,0x1E51}, {0x1E52,0x1E53}, {0x1E54,0x1E55}, {0x1E56,0x1E57}, 
+  {0x1E58,0x1E59}, {0x1E5A,0x1E5B}, {0x1E5C,0x1E5D}, {0x1E5E,0x1E5F}, {0x1E60,0x1E61}, 
+  {0x1E62,0x1E63}, {0x1E64,0x1E65}, {0x1E66,0x1E67}, {0x1E68,0x1E69}, {0x1E6A,0x1E6B}, 
+  {0x1E6C,0x1E6D}, {0x1E6E,0x1E6F}, {0x1E70,0x1E71}, {0x1E72,0x1E73}, {0x1E74,0x1E75}, 
+  {0x1E76,0x1E77}, {0x1E78,0x1E79}, {0x1E7A,0x1E7B}, {0x1E7C,0x1E7D}, {0x1E7E,0x1E7F}, 
+  {0x1E80,0x1E81}, {0x1E82,0x1E83}, {0x1E84,0x1E85}, {0x1E86,0x1E87}, {0x1E88,0x1E89}, 
+  {0x1E8A,0x1E8B}, {0x1E8C,0x1E8D}, {0x1E8E,0x1E8F}, {0x1E90,0x1E91}, {0x1E92,0x1E93}, 
+  {0x1E94,0x1E95}, {0x1EA0,0x1EA1}, {0x1EA2,0x1EA3}, {0x1EA4,0x1EA5}, {0x1EA6,0x1EA7}, 
+  {0x1EA8,0x1EA9}, {0x1EAA,0x1EAB}, {0x1EAC,0x1EAD}, {0x1EAE,0x1EAF}, {0x1EB0,0x1EB1}, 
+  {0x1EB2,0x1EB3}, {0x1EB4,0x1EB5}, {0x1EB6,0x1EB7}, {0x1EB8,0x1EB9}, {0x1EBA,0x1EBB}, 
+  {0x1EBC,0x1EBD}, {0x1EBE,0x1EBF}, {0x1EC0,0x1EC1}, {0x1EC2,0x1EC3}, {0x1EC4,0x1EC5}, 
+  {0x1EC6,0x1EC7}, {0x1EC8,0x1EC9}, {0x1ECA,0x1ECB}, {0x1ECC,0x1ECD}, {0x1ECE,0x1ECF}, 
+  {0x1ED0,0x1ED1}, {0x1ED2,0x1ED3}, {0x1ED4,0x1ED5}, {0x1ED6,0x1ED7}, {0x1ED8,0x1ED9}, 
+  {0x1EDA,0x1EDB}, {0x1EDC,0x1EDD}, {0x1EDE,0x1EDF}, {0x1EE0,0x1EE1}, {0x1EE2,0x1EE3}, 
+  {0x1EE4,0x1EE5}, {0x1EE6,0x1EE7}, {0x1EE8,0x1EE9}, {0x1EEA,0x1EEB}, {0x1EEC,0x1EED}, 
+  {0x1EEE,0x1EEF}, {0x1EF0,0x1EF1}, {0x1EF2,0x1EF3}, {0x1EF4,0x1EF5}, {0x1EF6,0x1EF7}, 
+  {0x1EF8,0x1EF9}, {0x1F08,0x1F00}, {0x1F09,0x1F01}, {0x1F0A,0x1F02}, {0x1F0B,0x1F03}, 
+  {0x1F0C,0x1F04}, {0x1F0D,0x1F05}, {0x1F0E,0x1F06}, {0x1F0F,0x1F07}, {0x1F18,0x1F10}, 
+  {0x1F19,0x1F11}, {0x1F1A,0x1F12}, {0x1F1B,0x1F13}, {0x1F1C,0x1F14}, {0x1F1D,0x1F15}, 
+  {0x1F28,0x1F20}, {0x1F29,0x1F21}, {0x1F2A,0x1F22}, {0x1F2B,0x1F23}, {0x1F2C,0x1F24}, 
+  {0x1F2D,0x1F25}, {0x1F2E,0x1F26}, {0x1F2F,0x1F27}, {0x1F38,0x1F30}, {0x1F39,0x1F31}, 
+  {0x1F3A,0x1F32}, {0x1F3B,0x1F33}, {0x1F3C,0x1F34}, {0x1F3D,0x1F35}, {0x1F3E,0x1F36}, 
+  {0x1F3F,0x1F37}, {0x1F48,0x1F40}, {0x1F49,0x1F41}, {0x1F4A,0x1F42}, {0x1F4B,0x1F43}, 
+  {0x1F4C,0x1F44}, {0x1F4D,0x1F45}, {0x1F59,0x1F51}, {0x1F5B,0x1F53}, {0x1F5D,0x1F55}, 
+  {0x1F5F,0x1F57}, {0x1F68,0x1F60}, {0x1F69,0x1F61}, {0x1F6A,0x1F62}, {0x1F6B,0x1F63}, 
+  {0x1F6C,0x1F64}, {0x1F6D,0x1F65}, {0x1F6E,0x1F66}, {0x1F6F,0x1F67}, {0x1F88,0x1F80}, 
+  {0x1F89,0x1F81}, {0x1F8A,0x1F82}, {0x1F8B,0x1F83}, {0x1F8C,0x1F84}, {0x1F8D,0x1F85}, 
+  {0x1F8E,0x1F86}, {0x1F8F,0x1F87}, {0x1F98,0x1F90}, {0x1F99,0x1F91}, {0x1F9A,0x1F92}, 
+  {0x1F9B,0x1F93}, {0x1F9C,0x1F94}, {0x1F9D,0x1F95}, {0x1F9E,0x1F96}, {0x1F9F,0x1F97}, 
+  {0x1FA8,0x1FA0}, {0x1FA9,0x1FA1}, {0x1FAA,0x1FA2}, {0x1FAB,0x1FA3}, {0x1FAC,0x1FA4}, 
+  {0x1FAD,0x1FA5}, {0x1FAE,0x1FA6}, {0x1FAF,0x1FA7}, {0x1FB8,0x1FB0}, {0x1FB9,0x1FB1}, 
+  {0x1FBA,0x1F70}, {0x1FBB,0x1F71}, {0x1FBC,0x1FB3}, {0x1FC8,0x1F72}, {0x1FC9,0x1F73}, 
+  {0x1FCA,0x1F74}, {0x1FCB,0x1F75}, {0x1FCC,0x1FC3}, {0x1FD8,0x1FD0}, {0x1FD9,0x1FD1}, 
+  {0x1FDA,0x1F76}, {0x1FDB,0x1F77}, {0x1FE8,0x1FE0}, {0x1FE9,0x1FE1}, {0x1FEA,0x1F7A}, 
+  {0x1FEB,0x1F7B}, {0x1FEC,0x1FE5}, {0x1FF8,0x1F78}, {0x1FF9,0x1F79}, {0x1FFA,0x1F7C}, 
+  {0x1FFB,0x1F7D}, {0x1FFC,0x1FF3}, {0x2160,0x2170}, {0x2161,0x2171}, {0x2162,0x2172}, 
+  {0x2163,0x2173}, {0x2164,0x2174}, {0x2165,0x2175}, {0x2166,0x2176}, {0x2167,0x2177}, 
+  {0x2168,0x2178}, {0x2169,0x2179}, {0x216A,0x217A}, {0x216B,0x217B}, {0x216C,0x217C}, 
+  {0x216D,0x217D}, {0x216E,0x217E}, {0x216F,0x217F}, {0x24B6,0x24D0}, {0x24B7,0x24D1}, 
+  {0x24B8,0x24D2}, {0x24B9,0x24D3}, {0x24BA,0x24D4}, {0x24BB,0x24D5}, {0x24BC,0x24D6}, 
+  {0x24BD,0x24D7}, {0x24BE,0x24D8}, {0x24BF,0x24D9}, {0x24C0,0x24DA}, {0x24C1,0x24DB}, 
+  {0x24C2,0x24DC}, {0x24C3,0x24DD}, {0x24C4,0x24DE}, {0x24C5,0x24DF}, {0x24C6,0x24E0}, 
+  {0x24C7,0x24E1}, {0x24C8,0x24E2}, {0x24C9,0x24E3}, {0x24CA,0x24E4}, {0x24CB,0x24E5}, 
+  {0x24CC,0x24E6}, {0x24CD,0x24E7}, {0x24CE,0x24E8}, {0x24CF,0x24E9}, {0xFF21,0xFF41}, 
+  {0xFF22,0xFF42}, {0xFF23,0xFF43}, {0xFF24,0xFF44}, {0xFF25,0xFF45}, {0xFF26,0xFF46}, 
+  {0xFF27,0xFF47}, {0xFF28,0xFF48}, {0xFF29,0xFF49}, {0xFF2A,0xFF4A}, {0xFF2B,0xFF4B}, 
+  {0xFF2C,0xFF4C}, {0xFF2D,0xFF4D}, {0xFF2E,0xFF4E}, {0xFF2F,0xFF4F}, {0xFF30,0xFF50}, 
+  {0xFF31,0xFF51}, {0xFF32,0xFF52}, {0xFF33,0xFF53}, {0xFF34,0xFF54}, {0xFF35,0xFF55}, 
+  {0xFF36,0xFF56}, {0xFF37,0xFF57}, {0xFF38,0xFF58}, {0xFF39,0xFF59}, {0xFF3A,0xFF5A}
+};
+
+
+
+#define NUM_TOSIMPLIFIED_INFO 2145
+static const unirelate tosimplified_info[NUM_TOSIMPLIFIED_INFO] = {
+  {0x4E48,0x9EBD}, {0x4E82,0x4E71}, {0x4E9E,0x4E9A}, {0x4F47,0x4F2B}, {0x4F59,0x9980}, 
+  {0x4F86,0x6765}, {0x4F96,0x4ED1}, {0x4FE0,0x4FA0}, {0x5000,0x4F25}, {0x5006,0x4FE9}, 
+  {0x5009,0x4ED3}, {0x500B,0x4E2A}, {0x5011,0x4EEC}, {0x502B,0x4F26}, {0x5049,0x4F1F}, 
+  {0x5074,0x4FA7}, {0x5075,0x4FA6}, {0x5096,0x4F27}, {0x5098,0x4F1E}, {0x5099,0x5907}, 
+  {0x50AD,0x4F63}, {0x50B3,0x4F20}, {0x50B4,0x4F1B}, {0x50B5,0x503A}, {0x50B7,0x4F24}, 
+  {0x50BE,0x503E}, {0x50C2,0x507B}, {0x50C5,0x4EC5}, {0x50C9,0x4F65}, {0x50D1,0x4FA8}, 
+  {0x50D5,0x4EC6}, {0x50DE,0x4F2A}, {0x50E5,0x4FA5}, {0x50E8,0x507E}, {0x50F9,0x4EF7}, 
+  {0x5100,0x4EEA}, {0x5102,0x4FAC}, {0x5104,0x4EBF}, {0x5108,0x4FA9}, {0x5109,0x4FED}, 
+  {0x5110,0x50A7}, {0x5114,0x4FE6}, {0x5115,0x4FAA}, {0x511F,0x507F}, {0x512A,0x4F18}, 
+  {0x5132,0x50A8}, {0x5137,0x4FEA}, {0x513A,0x50A9}, {0x513B,0x50A5}, {0x513C,0x4FE8}, 
+  {0x5152,0x513F}, {0x5169,0x4E24}, {0x51C8,0x51C0}, {0x51CD,0x51BB}, {0x51F1,0x51EF}, 
+  {0x5244,0x522D}, {0x5247,0x5219}, {0x525B,0x521A}, {0x526E,0x5250}, {0x5274,0x5240}, 
+  {0x5275,0x521B}, {0x5283,0x5212}, {0x5287,0x5267}, {0x5289,0x5218}, {0x528A,0x523D}, 
+  {0x528C,0x523F}, {0x528D,0x5251}, {0x5291,0x5242}, {0x52C1,0x52B2}, {0x52D5,0x52A8}, 
+  {0x52D9,0x52A1}, {0x52DB,0x52CB}, {0x52DD,0x80DC}, {0x52DE,0x52B3}, {0x52E2,0x52BF}, 
+  {0x52F1,0x52A2}, {0x52F5,0x52B1}, {0x52F8,0x529D}, {0x532D,0x5326}, {0x532F,0x6C47}, 
+  {0x5331,0x532E}, {0x5340,0x533A}, {0x5354,0x534F}, {0x5399,0x538D}, {0x53A0,0x5395}, 
+  {0x53AD,0x538C}, {0x53B2,0x5389}, {0x53B4,0x53A3}, {0x53C3,0x53C2}, {0x53E2,0x4E1B}, 
+  {0x540E,0x5F8C}, {0x54BC,0x5459}, {0x54E1,0x5458}, {0x5504,0x5457}, {0x554F,0x95EE}, 
+  {0x5553,0x542F}, {0x555E,0x54D1}, {0x559A,0x5524}, {0x55AA,0x4E27}, {0x55AC,0x4E54}, 
+  {0x55AE,0x5355}, {0x55B2,0x54DF}, {0x55C6,0x545B}, {0x55C7,0x556C}, {0x55CE,0x5417}, 
+  {0x55DA,0x545C}, {0x55E9,0x5522}, {0x55F6,0x54D4}, {0x5606,0x53F9}, {0x560D,0x55BD}, 
+  {0x5614,0x5455}, {0x5616,0x5567}, {0x5617,0x5C1D}, {0x561C,0x551B}, {0x5629,0x54D7}, 
+  {0x562E,0x5520}, {0x562F,0x5578}, {0x5630,0x53FD}, {0x5635,0x54D3}, {0x5638,0x5452}, 
+  {0x565D,0x549D}, {0x5660,0x54D2}, {0x5665,0x54DD}, {0x5666,0x54D5}, {0x566F,0x55F3}, 
+  {0x5672,0x54D9}, {0x5674,0x55B7}, {0x5678,0x5428}, {0x5680,0x549B}, {0x5687,0x5413}, 
+  {0x568C,0x54DC}, {0x5695,0x565C}, {0x5699,0x556E}, {0x56A6,0x5456}, {0x56A8,0x5499}, 
+  {0x56B3,0x55BE}, {0x56B4,0x4E25}, {0x56B6,0x5624}, {0x56C0,0x556D}, {0x56C1,0x55EB}, 
+  {0x56C2,0x56A3}, {0x56C5,0x5181}, {0x56C8,0x5453}, {0x56D1,0x5631}, {0x5707,0x56F5}, 
+  {0x570B,0x56FD}, {0x570D,0x56F4}, {0x5712,0x56ED}, {0x5713,0x5706}, {0x5716,0x56FE}, 
+  {0x5718,0x56E2}, {0x57E1,0x57AD}, {0x57F7,0x6267}, {0x5805,0x575A}, {0x580A,0x57A9}, 
+  {0x5816,0x57B4}, {0x581D,0x57DA}, {0x582F,0x5C27}, {0x5831,0x62A5}, {0x5834,0x573A}, 
+  {0x584A,0x5757}, {0x584B,0x8314}, {0x584F,0x57B2}, {0x5852,0x57D8}, {0x5857,0x6D82}, 
+  {0x5862,0x575E}, {0x5864,0x57D9}, {0x5875,0x5C18}, {0x5879,0x5811}, {0x588A,0x57AB}, 
+  {0x589C,0x5760}, {0x58AE,0x5815}, {0x58B3,0x575F}, {0x58BB,0x5899}, {0x58BE,0x57A6}, 
+  {0x58C7,0x575B}, {0x58D3,0x538B}, {0x58D8,0x5792}, {0x58D9,0x5739}, {0x58DA,0x5786}, 
+  {0x58DE,0x574F}, {0x58DF,0x5784}, {0x58E0,0x5785}, {0x58E2,0x575C}, {0x58E9,0x575D}, 
+  {0x58EF,0x58EE}, {0x58FA,0x58F6}, {0x58FD,0x5BFF}, {0x5922,0x68A6}, {0x593E,0x5939}, 
+  {0x5950,0x5942}, {0x5969,0x5941}, {0x596A,0x593A}, {0x596C,0x5956}, {0x596E,0x594B}, 
+  {0x599D,0x5986}, {0x5A41,0x5A04}, {0x5A66,0x5987}, {0x5A6D,0x5A05}, {0x5AA7,0x5A32}, 
+  {0x5ABD,0x5988}, {0x5AD7,0x59AA}, {0x5AF5,0x59A9}, {0x5AFB,0x5A34}, {0x5B00,0x59AB}, 
+  {0x5B08,0x5A06}, {0x5B0B,0x5A75}, {0x5B0C,0x5A07}, {0x5B19,0x5AF1}, {0x5B21,0x5AD2}, 
+  {0x5B2A,0x5AD4}, {0x5B30,0x5A74}, {0x5B38,0x5A76}, {0x5B4C,0x5A08}, {0x5B6B,0x5B59}, 
+  {0x5B78,0x5B66}, {0x5B7F,0x5B6A}, {0x5BE2,0x5BDD}, {0x5BE6,0x5B9E}, {0x5BE7,0x5B81}, 
+  {0x5BE9,0x5BA1}, {0x5BEB,0x5199}, {0x5BEC,0x5BBD}, {0x5BF5,0x5BA0}, {0x5BF6,0x5B9D}, 
+  {0x5C07,0x5C06}, {0x5C08,0x4E13}, {0x5C0B,0x5BFB}, {0x5C0D,0x5BF9}, {0x5C0E,0x5BFC}, 
+  {0x5C37,0x5C34}, {0x5C62,0x5C61}, {0x5C64,0x5C42}, {0x5C68,0x5C66}, {0x5C6C,0x5C5E}, 
+  {0x5CA1,0x5188}, {0x5CF4,0x5C98}, {0x5CF6,0x5C9B}, {0x5CFD,0x5CE1}, {0x5D0D,0x5D03}, 
+  {0x5D17,0x5C97}, {0x5D22,0x5CE5}, {0x5D2C,0x5CBD}, {0x5D50,0x5C9A}, {0x5D81,0x5D5D}, 
+  {0x5D84,0x5D2D}, {0x5D87,0x5C96}, {0x5D97,0x5D02}, {0x5DA0,0x5CE4}, {0x5DA7,0x5CC4}, 
+  {0x5DB8,0x5D58}, {0x5DBA,0x5CAD}, {0x5DBC,0x5C7F}, {0x5DCB,0x5CBF}, {0x5DD2,0x5CE6}, 
+  {0x5DD4,0x5DC5}, {0x5DF0,0x5DEF}, {0x5E25,0x5E05}, {0x5E2B,0x5E08}, {0x5E33,0x5E10}, 
+  {0x5E36,0x5E26}, {0x5E40,0x5E27}, {0x5E43,0x5E0F}, {0x5E57,0x5E3C}, {0x5E58,0x5E3B}, 
+  {0x5E5F,0x5E1C}, {0x5E63,0x5E01}, {0x5E6B,0x5E2E}, {0x5E6C,0x5E31}, {0x5E79,0x5E72}, 
+  {0x5E7E,0x51E0}, {0x5EAB,0x5E93}, {0x5EDF,0x5E99}, {0x5EE0,0x5382}, {0x5EE1,0x5E91}, 
+  {0x5EE2,0x5E9F}, {0x5EE3,0x5E7F}, {0x5EEC,0x5E90}, {0x5EF3,0x5385}, {0x5F33,0x5F2A}, 
+  {0x5F35,0x5F20}, {0x5F48,0x5F39}, {0x5F4C,0x5F25}, {0x5F4E,0x5F2F}, {0x5F8C,0x540E}, 
+  {0x5F91,0x5F84}, {0x5F9E,0x4ECE}, {0x5FA0,0x5F95}, {0x5FA9,0x590D}, {0x5FB9,0x5F7B}, 
+  {0x60B5,0x6005}, {0x60B6,0x95F7}, {0x60E1,0x6076}, {0x60F1,0x607C}, {0x60F2,0x607D}, 
+  {0x60FB,0x607B}, {0x611B,0x7231}, {0x611C,0x60EC}, {0x6134,0x6006}, {0x6137,0x607A}, 
+  {0x613E,0x5FFE}, {0x614B,0x6001}, {0x6158,0x60E8}, {0x615A,0x60ED}, {0x615F,0x6078}, 
+  {0x6163,0x60EF}, {0x6164,0x60AB}, {0x616A,0x6004}, {0x616B,0x6002}, {0x616E,0x8651}, 
+  {0x6173,0x60AD}, {0x6176,0x5E86}, {0x6182,0x5FE7}, {0x618A,0x60EB}, {0x6190,0x601C}, 
+  {0x6191,0x51ED}, {0x6192,0x6126}, {0x619A,0x60EE}, {0x61A4,0x6124}, {0x61AB,0x60AF}, 
+  {0x61AE,0x6003}, {0x61B2,0x5BAA}, {0x61B6,0x5FC6}, {0x61C7,0x6073}, {0x61C9,0x5E94}, 
+  {0x61CC,0x603F}, {0x61DF,0x603C}, {0x61E3,0x61D1}, {0x61E8,0x6079}, {0x61F2,0x60E9}, 
+  {0x61F6,0x61D2}, {0x61F7,0x6000}, {0x61F8,0x60AC}, {0x61FA,0x5FCF}, {0x61FC,0x60E7}, 
+  {0x61FE,0x6151}, {0x6200,0x604B}, {0x6207,0x6206}, {0x6214,0x620B}, {0x6227,0x6217}, 
+  {0x6229,0x622C}, {0x6230,0x6218}, {0x6232,0x620F}, {0x633E,0x631F}, {0x6368,0x820D}, 
+  {0x636B,0x626A}, {0x6383,0x626B}, {0x6384,0x62A1}, {0x6399,0x6323}, {0x63C0,0x62E3}, 
+  {0x63DA,0x626C}, {0x63DB,0x6362}, {0x63EE,0x6325}, {0x640D,0x635F}, {0x6417,0x6363}, 
+  {0x6436,0x62A2}, {0x6451,0x63B4}, {0x645C,0x63BC}, {0x645F,0x6402}, {0x646F,0x631A}, 
+  {0x6473,0x62A0}, {0x6476,0x629F}, {0x647B,0x63BA}, {0x6488,0x635E}, {0x6493,0x6320}, 
+  {0x649F,0x6322}, {0x64A3,0x63B8}, {0x64A5,0x62E8}, {0x64AB,0x629A}, {0x64B2,0x6251}, 
+  {0x64B3,0x63FF}, {0x64BB,0x631E}, {0x64BE,0x631D}, {0x64BF,0x6361}, {0x64C1,0x62E5}, 
+  {0x64C4,0x63B3}, {0x64C7,0x62E9}, {0x64CA,0x51FB}, {0x64CB,0x6321}, {0x64D4,0x62C5}, 
+  {0x64DA,0x636E}, {0x64E0,0x6324}, {0x64EC,0x62DF}, {0x64EF,0x6448}, {0x64F0,0x62E7}, 
+  {0x64F1,0x6401}, {0x64F2,0x63B7}, {0x64F4,0x6269}, {0x64F7,0x64B7}, {0x64FA,0x6446}, 
+  {0x64FB,0x64DE}, {0x64FC,0x64B8}, {0x64FE,0x6270}, {0x6504,0x6445}, {0x6506,0x64B5}, 
+  {0x650F,0x62E2}, {0x6514,0x62E6}, {0x6516,0x6484}, {0x6519,0x6400}, {0x651B,0x64BA}, 
+  {0x651D,0x6444}, {0x6522,0x6512}, {0x6523,0x631B}, {0x6524,0x644A}, {0x652A,0x6405}, 
+  {0x652C,0x63FD}, {0x6557,0x8D25}, {0x6575,0x654C}, {0x6578,0x6570}, {0x6582,0x655B}, 
+  {0x6583,0x6BD9}, {0x6595,0x6593}, {0x65AC,0x65A9}, {0x65B7,0x65AD}, {0x6642,0x65F6}, 
+  {0x6649,0x664B}, {0x665D,0x663C}, {0x6688,0x6655}, {0x6689,0x6656}, {0x66A2,0x7545}, 
+  {0x66AB,0x6682}, {0x66C4,0x6654}, {0x66C7,0x6619}, {0x66C9,0x6653}, {0x66D6,0x66A7}, 
+  {0x66E0,0x65F7}, {0x66EC,0x6652}, {0x66F8,0x4E66}, {0x6703,0x4F1A}, {0x6727,0x80E7}, 
+  {0x6771,0x4E1C}, {0x6898,0x67A7}, {0x689D,0x6761}, {0x689F,0x67AD}, {0x68C4,0x5F03}, 
+  {0x68D6,0x67A8}, {0x68D7,0x67A3}, {0x68DF,0x680B}, {0x68E7,0x6808}, {0x68F2,0x6816}, 
+  {0x690F,0x6860}, {0x694A,0x6768}, {0x6953,0x67AB}, {0x6968,0x6862}, {0x696D,0x4E1A}, 
+  {0x6975,0x6781}, {0x69AA,0x6769}, {0x69AE,0x8363}, {0x69BF,0x6864}, {0x69CB,0x6784}, 
+  {0x69CD,0x67AA}, {0x69E7,0x6920}, {0x69F3,0x6868}, {0x6A01,0x6869}, {0x6A02,0x4E50}, 
+  {0x6A05,0x679E}, {0x6A13,0x697C}, {0x6A19,0x6807}, {0x6A1E,0x67A2}, {0x6A23,0x6837}, 
+  {0x6A38,0x6734}, {0x6A39,0x6811}, {0x6A3A,0x6866}, {0x6A48,0x6861}, {0x6A4B,0x6865}, 
+  {0x6A5F,0x673A}, {0x6A62,0x692D}, {0x6A89,0x67FD}, {0x6A94,0x6863}, {0x6A9C,0x6867}, 
+  {0x6AA2,0x68C0}, {0x6AA3,0x6A2F}, {0x6AB3,0x69DF}, {0x6AB8,0x67E0}, {0x6ABB,0x69DB}, 
+  {0x6AC3,0x67DC}, {0x6AD3,0x6A79}, {0x6ADA,0x6988}, {0x6ADB,0x6809}, {0x6ADD,0x691F}, 
+  {0x6ADE,0x6A7C}, {0x6ADF,0x680E}, {0x6AE7,0x69E0}, {0x6AE8,0x680C}, {0x6AEA,0x67A5}, 
+  {0x6AEC,0x6987}, {0x6AF3,0x680A}, {0x6AF8,0x6989}, {0x6AFB,0x6A31}, {0x6B04,0x680F}, 
+  {0x6B0A,0x6743}, {0x6B0F,0x6924}, {0x6B12,0x683E}, {0x6B16,0x6984}, {0x6B1E,0x68C2}, 
+  {0x6B3D,0x94A6}, {0x6B50,0x6B27}, {0x6B5F,0x6B24}, {0x6B61,0x6B22}, {0x6B72,0x5C81}, 
+  {0x6B77,0x5386}, {0x6B78,0x5F52}, {0x6B98,0x6B8B}, {0x6B9E,0x6B92}, {0x6BA4,0x6B87}, 
+  {0x6BAB,0x6B9A}, {0x6BAE,0x6B93}, {0x6BAF,0x6BA1}, {0x6BB2,0x6B7C}, {0x6BBA,0x6740}, 
+  {0x6BBB,0x58F3}, {0x6BC6,0x6BB4}, {0x6BFF,0x6BF5}, {0x6C08,0x6BE1}, {0x6C0C,0x6C07}, 
+  {0x6C23,0x6C14}, {0x6C2B,0x6C22}, {0x6C2C,0x6C29}, {0x6D79,0x6D43}, {0x6D87,0x6CFE}, 
+  {0x6DEA,0x6CA6}, {0x6DF5,0x6E0A}, {0x6DF6,0x6D9E}, {0x6DFA,0x6D45}, {0x6E19,0x6DA3}, 
+  {0x6E26,0x6DA1}, {0x6E2C,0x6D4B}, {0x6E3E,0x6D51}, {0x6E5E,0x6D48}, {0x6E6F,0x6C64}, 
+  {0x6E96,0x51C6}, {0x6E9D,0x6C9F}, {0x6EC4,0x6CA7}, {0x6EC5,0x706D}, {0x6ECC,0x6DA4}, 
+  {0x6ECE,0x8365}, {0x6EEC,0x6CAA}, {0x6EEF,0x6EDE}, {0x6EF2,0x6E17}, {0x6EF7,0x5364}, 
+  {0x6EF8,0x6D52}, {0x6EFF,0x6EE1}, {0x6F01,0x6E14}, {0x6F1A,0x6CA4}, {0x6F22,0x6C49}, 
+  {0x6F23,0x6D9F}, {0x6F2C,0x6E0D}, {0x6F32,0x6DA8}, {0x6F38,0x6E10}, {0x6F3F,0x6D46}, 
+  {0x6F41,0x988D}, {0x6F51,0x6CFC}, {0x6F54,0x6D01}, {0x6F59,0x6CA9}, {0x6F5B,0x6F5C}, 
+  {0x6F64,0x6DA6}, {0x6F6F,0x6D54}, {0x6F70,0x6E83}, {0x6F77,0x6ED7}, {0x6F7F,0x6DA0}, 
+  {0x6F80,0x6DA9}, {0x6F86,0x6D47}, {0x6F87,0x6D9D}, {0x6F97,0x6DA7}, {0x6FA0,0x6E11}, 
+  {0x6FA4,0x6CFD}, {0x6FA9,0x6CF6}, {0x6FAE,0x6D4D}, {0x6FB1,0x6DC0}, {0x6FC1,0x6D4A}, 
+  {0x6FC3,0x6D53}, {0x6FD5,0x6E7F}, {0x6FD8,0x6CDE}, {0x6FDF,0x6D4E}, {0x6FE4,0x6D9B}, 
+  {0x6FEB,0x6EE5}, {0x6FF0,0x6F4D}, {0x6FF1,0x6EE8}, {0x6FFA,0x6E85}, {0x6FFC,0x6CFA}, 
+  {0x6FFE,0x6EE4}, {0x7005,0x6EE2}, {0x7006,0x6E0E}, {0x7009,0x6CFB}, {0x700B,0x6E16}, 
+  {0x700F,0x6D4F}, {0x7015,0x6FD2}, {0x7018,0x6CF8}, {0x701D,0x6CA5}, {0x701F,0x6F47}, 
+  {0x7020,0x6F46}, {0x7027,0x6CF7}, {0x7028,0x6FD1}, {0x7032,0x6F4B}, {0x703E,0x6F9C}, 
+  {0x7043,0x6CA3}, {0x7044,0x6EE0}, {0x7051,0x6D12}, {0x7055,0x6F13}, {0x7058,0x6EE9}, 
+  {0x705D,0x704F}, {0x7063,0x6E7E}, {0x7064,0x6EE6}, {0x7067,0x6EDF}, {0x70CF,0x4E4C}, 
+  {0x70F4,0x70C3}, {0x7121,0x65E0}, {0x7149,0x70BC}, {0x7152,0x709C}, {0x7162,0x8315}, 
+  {0x7165,0x7115}, {0x7169,0x70E6}, {0x716C,0x7080}, {0x7192,0x8367}, {0x7197,0x709D}, 
+  {0x71B1,0x70ED}, {0x71BE,0x70BD}, {0x71C1,0x70E8}, {0x71C8,0x706F}, {0x71D2,0x70E7}, 
+  {0x71D9,0x70EB}, {0x71DC,0x7116}, {0x71DF,0x8425}, {0x71E6,0x707F}, {0x71ED,0x70DB}, 
+  {0x71F4,0x70E9}, {0x71FC,0x70EC}, {0x71FE,0x7118}, {0x720D,0x70C1}, {0x7210,0x7089}, 
+  {0x721B,0x70C2}, {0x722D,0x4E89}, {0x7232,0x4E3A}, {0x723A,0x7237}, {0x723E,0x5C14}, 
+  {0x7258,0x724D}, {0x727D,0x7275}, {0x7296,0x8366}, {0x72A2,0x728A}, {0x72A7,0x727A}, 
+  {0x72C0,0x72B6}, {0x72F9,0x72ED}, {0x72FD,0x72C8}, {0x7319,0x72F0}, {0x7336,0x72B9}, 
+  {0x733B,0x72F2}, {0x7341,0x72B8}, {0x7344,0x72F1}, {0x7345,0x72EE}, {0x7368,0x72EC}, 
+  {0x736A,0x72EF}, {0x736B,0x7303}, {0x7370,0x72DE}, {0x7372,0x83B7}, {0x7375,0x730E}, 
+  {0x7377,0x72B7}, {0x7378,0x517D}, {0x737A,0x736D}, {0x737B,0x732E}, {0x737C,0x7315}, 
+  {0x7380,0x7321}, {0x73FE,0x73B0}, {0x743F,0x73F2}, {0x744B,0x73AE}, {0x7463,0x7410}, 
+  {0x7469,0x83B9}, {0x746A,0x739B}, {0x7489,0x740F}, {0x74A3,0x7391}, {0x74A6,0x7477}, 
+  {0x74B0,0x73AF}, {0x74BD,0x73BA}, {0x74CA,0x743C}, {0x74CF,0x73D1}, {0x74D4,0x748E}, 
+  {0x74DA,0x74D2}, {0x750C,0x74EF}, {0x7523,0x4EA7}, {0x755D,0x4EA9}, {0x7562,0x6BD5}, 
+  {0x756B,0x753B}, {0x7576,0x5F53}, {0x7587,0x7574}, {0x758A,0x53E0}, {0x75D9,0x75C9}, 
+  {0x7602,0x75D6}, {0x760B,0x75AF}, {0x760D,0x75A1}, {0x7613,0x75EA}, {0x761E,0x7617}, 
+  {0x7621,0x75AE}, {0x7627,0x759F}, {0x763B,0x7618}, {0x7642,0x7597}, {0x7646,0x75E8}, 
+  {0x7647,0x75EB}, {0x7649,0x7605}, {0x7658,0x75A0}, {0x765F,0x762A}, {0x7662,0x75D2}, 
+  {0x7664,0x7596}, {0x7665,0x75C7}, {0x7667,0x75AC}, {0x7669,0x765E}, {0x766C,0x7663}, 
+  {0x766D,0x763F}, {0x766E,0x763E}, {0x7670,0x75C8}, {0x7671,0x762B}, {0x7672,0x766B}, 
+  {0x767C,0x53D1}, {0x769A,0x7691}, {0x76B8,0x76B2}, {0x76BA,0x76B1}, {0x76DE,0x76CF}, 
+  {0x76E1,0x5C3D}, {0x76E3,0x76D1}, {0x76E4,0x76D8}, {0x76E7,0x5362}, {0x775C,0x7741}, 
+  {0x775E,0x7750}, {0x7798,0x770D}, {0x779E,0x7792}, {0x77BC,0x7751}, {0x77DA,0x77A9}, 
+  {0x77EF,0x77EB}, {0x7864,0x7856}, {0x7868,0x7817}, {0x786F,0x781A}, {0x78A9,0x7855}, 
+  {0x78AD,0x7800}, {0x78B8,0x781C}, {0x78BA,0x786E}, {0x78BC,0x7801}, {0x78DA,0x7816}, 
+  {0x78E3,0x789C}, {0x78E7,0x789B}, {0x78EF,0x77F6}, {0x78FD,0x7857}, {0x790E,0x7840}, 
+  {0x7919,0x788D}, {0x7926,0x77FF}, {0x792A,0x783A}, {0x792B,0x783E}, {0x792C,0x77FE}, 
+  {0x7931,0x783B}, {0x798D,0x7978}, {0x798E,0x796F}, {0x79AA,0x7985}, {0x79AE,0x793C}, 
+  {0x79B0,0x7962}, {0x79B1,0x7977}, {0x7A2E,0x79CD}, {0x7A31,0x79F0}, {0x7A4C,0x7A23}, 
+  {0x7A4D,0x79EF}, {0x7A4E,0x9896}, {0x7A61,0x7A51}, {0x7A62,0x79FD}, {0x7A69,0x7A33}, 
+  {0x7AA9,0x7A9D}, {0x7AAA,0x6D3C}, {0x7AAE,0x7A77}, {0x7AB6,0x7AAD}, {0x7ABA,0x7AA5}, 
+  {0x7AC4,0x7A9C}, {0x7AC5,0x7A8D}, {0x7AC7,0x7AA6}, {0x7AC8,0x7076}, {0x7ACA,0x7A83}, 
+  {0x7AEA,0x7AD6}, {0x7AF6,0x7ADE}, {0x7B46,0x7B14}, {0x7B67,0x7B15}, {0x7B8B,0x7B3A}, 
+  {0x7B8F,0x7B5D}, {0x7BC0,0x8282}, {0x7BC4,0x8303}, {0x7BC9,0x7B51}, {0x7BCB,0x7BA7}, 
+  {0x7BE4,0x7B03}, {0x7BE9,0x7B5B}, {0x7BF3,0x7B5A}, {0x7C00,0x7BA6}, {0x7C0D,0x7BD3}, 
+  {0x7C1E,0x7BAA}, {0x7C21,0x7B80}, {0x7C23,0x7BD1}, {0x7C2B,0x7BAB}, {0x7C3D,0x7B7E}, 
+  {0x7C3E,0x5E18}, {0x7C43,0x7BEE}, {0x7C4C,0x7B79}, {0x7C5C,0x7BA8}, {0x7C5F,0x7C41}, 
+  {0x7C60,0x7B3C}, {0x7C69,0x7B3E}, {0x7C6A,0x7C16}, {0x7C6C,0x7BF1}, {0x7C6E,0x7BA9}, 
+  {0x7CDD,0x7CC1}, {0x7CDE,0x7CAA}, {0x7CE7,0x7CAE}, {0x7CF2,0x7C9D}, {0x7CF4,0x7C74}, 
+  {0x7CF6,0x7C9C}, {0x7CF9,0x7E9F}, {0x7CFE,0x7EA0}, {0x7D00,0x7EAA}, {0x7D02,0x7EA3}, 
+  {0x7D04,0x7EA6}, {0x7D05,0x7EA2}, {0x7D06,0x7EA1}, {0x7D07,0x7EA5}, {0x7D08,0x7EA8}, 
+  {0x7D09,0x7EAB}, {0x7D0B,0x7EB9}, {0x7D0D,0x7EB3}, {0x7D10,0x7EBD}, {0x7D13,0x7EBE}, 
+  {0x7D14,0x7EAF}, {0x7D15,0x7EB0}, {0x7D17,0x7EB1}, {0x7D19,0x7EB8}, {0x7D1A,0x7EA7}, 
+  {0x7D1B,0x7EB7}, {0x7D1C,0x7EAD}, {0x7D21,0x7EBA}, {0x7D30,0x7EC6}, {0x7D31,0x7EC2}, 
+  {0x7D32,0x7EC1}, {0x7D33,0x7EC5}, {0x7D39,0x7ECD}, {0x7D3A,0x7EC0}, {0x7D3C,0x7ECB}, 
+  {0x7D3F,0x7ED0}, {0x7D40,0x7ECC}, {0x7D42,0x7EC8}, {0x7D44,0x7EC4}, {0x7D46,0x7ECA}, 
+  {0x7D4E,0x7ED7}, {0x7D50,0x7ED3}, {0x7D5D,0x7ED4}, {0x7D5E,0x7EDE}, {0x7D61,0x7EDC}, 
+  {0x7D62,0x7EDA}, {0x7D66,0x7ED9}, {0x7D68,0x7ED2}, {0x7D71,0x7EDF}, {0x7D72,0x4E1D}, 
+  {0x7D73,0x7EDB}, {0x7D76,0x7EDD}, {0x7D79,0x7EE2}, {0x7D81,0x7ED1}, {0x7D83,0x7EE1}, 
+  {0x7D86,0x7EE0}, {0x7D88,0x7EE8}, {0x7D89,0x7EE3}, {0x7D8F,0x7EE5}, {0x7D93,0x7ECF}, 
+  {0x7D9C,0x7EFC}, {0x7D9E,0x7F0D}, {0x7DA2,0x7EF8}, {0x7DA3,0x7EFB}, {0x7DAB,0x7EBF}, 
+  {0x7DAC,0x7EF6}, {0x7DAD,0x7EF4}, {0x7DB0,0x7EFE}, {0x7DB1,0x7EB2}, {0x7DB2,0x7F51}, 
+  {0x7DB3,0x7EF7}, {0x7DB4,0x7F00}, {0x7DB8,0x7EB6}, {0x7DB9,0x7EFA}, {0x7DBA,0x7EEE}, 
+  {0x7DBB,0x7EFD}, {0x7DBD,0x7EF0}, {0x7DBE,0x7EEB}, {0x7DBF,0x7EF5}, {0x7DC4,0x7EF2}, 
+  {0x7DC7,0x7F01}, {0x7DCA,0x7D27}, {0x7DCB,0x7EEF}, {0x7DD1,0x7EFF}, {0x7DD2,0x7EEA}, 
+  {0x7DD4,0x7EF1}, {0x7DD7,0x7F03}, {0x7DD8,0x7F04}, {0x7DD9,0x7F02}, {0x7DDD,0x7F09}, 
+  {0x7DDE,0x7F0E}, {0x7DE0,0x7F14}, {0x7DE1,0x7F17}, {0x7DE3,0x7F18}, {0x7DE6,0x7F0C}, 
+  {0x7DE8,0x7F16}, {0x7DE9,0x7F13}, {0x7DEC,0x7F05}, {0x7DEF,0x7EAC}, {0x7DF1,0x7F11}, 
+  {0x7DF2,0x7F08}, {0x7DF4,0x7EC3}, {0x7DF6,0x7F0F}, {0x7DF9,0x7F07}, {0x7E08,0x8426}, 
+  {0x7E09,0x7F19}, {0x7E0A,0x7F22}, {0x7E0B,0x7F12}, {0x7E10,0x7EC9}, {0x7E11,0x7F23}, 
+  {0x7E1B,0x7F1A}, {0x7E1D,0x7F1C}, {0x7E1E,0x7F1F}, {0x7E1F,0x7F1B}, {0x7E23,0x53BF}, 
+  {0x7E27,0x7EE6}, {0x7E2B,0x7F1D}, {0x7E2D,0x7F21}, {0x7E2E,0x7F29}, {0x7E31,0x7EB5}, 
+  {0x7E32,0x7F27}, {0x7E35,0x7F26}, {0x7E36,0x7D77}, {0x7E37,0x7F15}, {0x7E39,0x7F25}, 
+  {0x7E3D,0x603B}, {0x7E3E,0x7EE9}, {0x7E45,0x7F2B}, {0x7E46,0x7F2A}, {0x7E52,0x7F2F}, 
+  {0x7E54,0x7EC7}, {0x7E55,0x7F2E}, {0x7E5A,0x7F2D}, {0x7E5E,0x7ED5}, {0x7E62,0x7F0B}, 
+  {0x7E69,0x7EF3}, {0x7E6A,0x7ED8}, {0x7E6D,0x8327}, {0x7E6E,0x7F30}, {0x7E6F,0x7F33}, 
+  {0x7E70,0x7F32}, {0x7E73,0x7F34}, {0x7E79,0x7ECE}, {0x7E7C,0x7EE7}, {0x7E7D,0x7F24}, 
+  {0x7E7E,0x7F31}, {0x7E88,0x7F2C}, {0x7E8A,0x7EA9}, {0x7E8C,0x7EED}, {0x7E8F,0x7F20}, 
+  {0x7E93,0x7F28}, {0x7E96,0x7EA4}, {0x7E98,0x7F35}, {0x7E9C,0x7F06}, {0x7F4C,0x7F42}, 
+  {0x7F70,0x7F5A}, {0x7F77,0x7F62}, {0x7F85,0x7F57}, {0x7F86,0x7F74}, {0x7F88,0x7F81}, 
+  {0x7FA5,0x7F9F}, {0x7FA9,0x4E49}, {0x7FD2,0x4E60}, {0x7FF9,0x7FD8}, {0x802C,0x8027}, 
+  {0x802E,0x8022}, {0x8056,0x5723}, {0x805E,0x95FB}, {0x806F,0x8054}, {0x8070,0x806A}, 
+  {0x8072,0x58F0}, {0x8073,0x8038}, {0x8075,0x8069}, {0x8076,0x8042}, {0x8077,0x804C}, 
+  {0x8079,0x804D}, {0x807D,0x542C}, {0x807E,0x804B}, {0x8085,0x8083}, {0x8105,0x80C1}, 
+  {0x811B,0x80EB}, {0x8139,0x80C0}, {0x814E,0x80BE}, {0x8156,0x80E8}, {0x8161,0x8136}, 
+  {0x8166,0x8111}, {0x816B,0x80BF}, {0x8178,0x80A0}, {0x819A,0x80A4}, {0x81A0,0x80F6}, 
+  {0x81A9,0x817B}, {0x81BD,0x80C6}, {0x81BE,0x810D}, {0x81BF,0x8113}, {0x81C9,0x8138}, 
+  {0x81CD,0x8110}, {0x81CF,0x8191}, {0x81D8,0x814A}, {0x81DA,0x80EA}, {0x81DF,0x810F}, 
+  {0x81E0,0x8114}, {0x81E8,0x4E34}, {0x81FA,0x53F0}, {0x8207,0x4E0E}, {0x8208,0x5174}, 
+  {0x8209,0x4E3E}, {0x820A,0x65E7}, {0x8259,0x8231}, {0x8264,0x8223}, {0x8266,0x8230}, 
+  {0x826B,0x823B}, {0x8271,0x8270}, {0x8277,0x8273}, {0x82BB,0x520D}, {0x82E7,0x82CE}, 
+  {0x838A,0x5E84}, {0x8396,0x830E}, {0x83A2,0x835A}, {0x83A7,0x82CB}, {0x83EF,0x534E}, 
+  {0x8407,0x82CC}, {0x840A,0x83B1}, {0x842C,0x4E07}, {0x8435,0x83B4}, {0x8449,0x53F6}, 
+  {0x8452,0x836D}, {0x8464,0x836E}, {0x8466,0x82C7}, {0x8477,0x8364}, {0x8493,0x83BC}, 
+  {0x8494,0x83B3}, {0x84BC,0x82CD}, {0x84C0,0x836A}, {0x84CB,0x76D6}, {0x84EE,0x83B2}, 
+  {0x84EF,0x82C1}, {0x84FD,0x835C}, {0x851E,0x848C}, {0x8523,0x848B}, {0x8526,0x8311}, 
+  {0x852D,0x836B}, {0x8541,0x8368}, {0x8546,0x8487}, {0x854E,0x835E}, {0x8552,0x836C}, 
+  {0x8553,0x82B8}, {0x8555,0x83B8}, {0x8558,0x835B}, {0x8562,0x8489}, {0x8569,0x8361}, 
+  {0x856A,0x829C}, {0x856D,0x8427}, {0x8577,0x84E3}, {0x8588,0x835F}, {0x858A,0x84DF}, 
+  {0x858C,0x8297}, {0x8594,0x8537}, {0x859F,0x83B6}, {0x85A6,0x8350}, {0x85A9,0x8428}, 
+  {0x85BA,0x8360}, {0x85CD,0x84DD}, {0x85CE,0x8369}, {0x85DD,0x827A}, {0x85E5,0x836F}, 
+  {0x85EA,0x85AE}, {0x85F4,0x8574}, {0x85F6,0x82C8}, {0x85F9,0x853C}, {0x85FA,0x853A}, 
+  {0x8604,0x8572}, {0x8606,0x82A6}, {0x8607,0x82CF}, {0x860B,0x82F9}, {0x861A,0x85D3}, 
+  {0x861E,0x8539}, {0x8622,0x830F}, {0x862D,0x5170}, {0x863A,0x84E0}, {0x863F,0x841D}, 
+  {0x8655,0x5904}, {0x865C,0x864F}, {0x865F,0x53F7}, {0x8667,0x4E8F}, {0x86FA,0x86F1}, 
+  {0x8706,0x86AC}, {0x8755,0x8680}, {0x8766,0x867E}, {0x8778,0x8717}, {0x8784,0x86F3}, 
+  {0x879E,0x8682}, {0x87A2,0x8424}, {0x87BB,0x877C}, {0x87C4,0x86F0}, {0x87C8,0x8748}, 
+  {0x87CE,0x87A8}, {0x87E3,0x866E}, {0x87EC,0x8749}, {0x87EF,0x86F2}, {0x87F2,0x866B}, 
+  {0x87F6,0x86CF}, {0x87FB,0x8681}, {0x8805,0x8747}, {0x8806,0x867F}, {0x8810,0x86F4}, 
+  {0x8811,0x877E}, {0x881F,0x8721}, {0x8823,0x86CE}, {0x8831,0x86CA}, {0x8836,0x8695}, 
+  {0x883B,0x86EE}, {0x8846,0x4F17}, {0x8853,0x672F}, {0x885B,0x536B}, {0x885D,0x51B2}, 
+  {0x8879,0x53EA}, {0x88CA,0x8885}, {0x88CF,0x91CC}, {0x88DC,0x8865}, {0x88DD,0x88C5}, 
+  {0x8932,0x88E4}, {0x8933,0x88E2}, {0x8938,0x891B}, {0x893B,0x4EB5}, {0x8947,0x88E5}, 
+  {0x8956,0x8884}, {0x895D,0x88E3}, {0x8960,0x88C6}, {0x8964,0x8934}, {0x896A,0x889C}, 
+  {0x896F,0x886C}, {0x8972,0x88AD}, {0x898B,0x89C1}, {0x898F,0x89C4}, {0x8993,0x89C5}, 
+  {0x8996,0x89C6}, {0x8998,0x89C7}, {0x89A1,0x89CB}, {0x89A6,0x89CE}, {0x89AA,0x4EB2}, 
+  {0x89AC,0x89CA}, {0x89AF,0x89CF}, {0x89B2,0x89D0}, {0x89B7,0x89D1}, {0x89BA,0x89C9}, 
+  {0x89BD,0x89C8}, {0x89BF,0x89CC}, {0x89C0,0x89C2}, {0x89F4,0x89DE}, {0x89F6,0x89EF}, 
+  {0x89F8,0x89E6}, {0x8A01,0x8BA0}, {0x8A02,0x8BA2}, {0x8A03,0x8BA3}, {0x8A08,0x8BA1}, 
+  {0x8A0A,0x8BAF}, {0x8A0C,0x8BA7}, {0x8A0E,0x8BA8}, {0x8A10,0x8BA6}, {0x8A13,0x8BAD}, 
+  {0x8A15,0x8BAA}, {0x8A16,0x8BAB}, {0x8A18,0x8BB0}, {0x8A1B,0x8BB9}, {0x8A1D,0x8BB6}, 
+  {0x8A1F,0x8BBC}, {0x8A23,0x8BC0}, {0x8A25,0x8BB7}, {0x8A2A,0x8BBF}, {0x8A2D,0x8BBE}, 
+  {0x8A31,0x8BB8}, {0x8A34,0x8BC9}, {0x8A36,0x8BC3}, {0x8A3A,0x8BCA}, {0x8A41,0x8BC2}, 
+  {0x8A46,0x8BCB}, {0x8A4E,0x8BB5}, {0x8A50,0x8BC8}, {0x8A52,0x8BD2}, {0x8A54,0x8BCF}, 
+  {0x8A55,0x8BC4}, {0x8A58,0x8BCE}, {0x8A5B,0x8BC5}, {0x8A5E,0x8BCD}, {0x8A61,0x8BE9}, 
+  {0x8A62,0x8BE2}, {0x8A63,0x8BE3}, {0x8A66,0x8BD5}, {0x8A69,0x8BD7}, {0x8A6B,0x8BE7}, 
+  {0x8A6C,0x8BDF}, {0x8A6D,0x8BE1}, {0x8A6E,0x8BE0}, {0x8A70,0x8BD8}, {0x8A71,0x8BDD}, 
+  {0x8A72,0x8BE5}, {0x8A73,0x8BE6}, {0x8A75,0x8BDC}, {0x8A7C,0x8BD9}, {0x8A7F,0x8BD6}, 
+  {0x8A84,0x8BD4}, {0x8A85,0x8BDB}, {0x8A86,0x8BD3}, {0x8A87,0x5938}, {0x8A8D,0x8BA4}, 
+  {0x8A91,0x8BF3}, {0x8A92,0x8BF6}, {0x8A95,0x8BDE}, {0x8A98,0x8BF1}, {0x8A9A,0x8BEE}, 
+  {0x8A9E,0x8BED}, {0x8AA0,0x8BDA}, {0x8AA1,0x8BEB}, {0x8AA3,0x8BEC}, {0x8AA4,0x8BEF}, 
+  {0x8AA5,0x8BF0}, {0x8AA6,0x8BF5}, {0x8AA8,0x8BF2}, {0x8AAC,0x8BF4}, {0x8AB0,0x8C01}, 
+  {0x8AB2,0x8BFE}, {0x8AB6,0x8C07}, {0x8AB9,0x8BFD}, {0x8ABC,0x8C0A}, {0x8ABF,0x8C03}, 
+  {0x8AC2,0x8C04}, {0x8AC4,0x8C06}, {0x8AC7,0x8C08}, {0x8AC9,0x8BFF}, {0x8ACB,0x8BF7}, 
+  {0x8ACD,0x8BE4}, {0x8ACF,0x8BF9}, {0x8AD1,0x8BFC}, {0x8AD2,0x8C05}, {0x8AD6,0x8BBA}, 
+  {0x8AD7,0x8C02}, {0x8ADB,0x8C00}, {0x8ADC,0x8C0D}, {0x8ADE,0x8C1D}, {0x8AE2,0x8BE8}, 
+  {0x8AE4,0x8C14}, {0x8AE6,0x8C1B}, {0x8AE7,0x8C10}, {0x8AEB,0x8C0F}, {0x8AED,0x8C15}, 
+  {0x8AEE,0x8C18}, {0x8AF1,0x8BB3}, {0x8AF3,0x8C19}, {0x8AF6,0x8C0C}, {0x8AF7,0x8BBD}, 
+  {0x8AF8,0x8BF8}, {0x8AFA,0x8C1A}, {0x8AFC,0x8C16}, {0x8AFE,0x8BFA}, {0x8B00,0x8C0B}, 
+  {0x8B01,0x8C12}, {0x8B02,0x8C13}, {0x8B04,0x8A8A}, {0x8B05,0x8BCC}, {0x8B0A,0x8C0E}, 
+  {0x8B0E,0x8C1C}, {0x8B10,0x8C27}, {0x8B14,0x8C11}, {0x8B16,0x8C21}, {0x8B17,0x8C24}, 
+  {0x8B19,0x8C26}, {0x8B1A,0x8C25}, {0x8B1B,0x8BB2}, {0x8B1D,0x8C22}, {0x8B21,0x8C23}, 
+  {0x8B28,0x8C1F}, {0x8B2B,0x8C2A}, {0x8B2C,0x8C2C}, {0x8B2D,0x8C2B}, {0x8B33,0x8BB4}, 
+  {0x8B39,0x8C28}, {0x8B3E,0x8C29}, {0x8B49,0x8BC1}, {0x8B4E,0x8C32}, {0x8B4F,0x8BA5}, 
+  {0x8B56,0x8C2E}, {0x8B58,0x8BC6}, {0x8B59,0x8C2F}, {0x8B5A,0x8C2D}, {0x8B5C,0x8C31}, 
+  {0x8B6B,0x8C35}, {0x8B6F,0x8BD1}, {0x8B70,0x8BAE}, {0x8B74,0x8C34}, {0x8B77,0x62A4}, 
+  {0x8B7D,0x8A89}, {0x8B80,0x8BFB}, {0x8B8A,0x53D8}, {0x8B8E,0x96E0}, {0x8B92,0x8C17}, 
+  {0x8B93,0x8BA9}, {0x8B95,0x8C30}, {0x8B96,0x8C36}, {0x8B9C,0x8C20}, {0x8B9E,0x8C33}, 
+  {0x8C48,0x5C82}, {0x8C50,0x4E30}, {0x8C9D,0x8D1D}, {0x8C9E,0x8D1E}, {0x8CA0,0x8D1F}, 
+  {0x8CA1,0x8D22}, {0x8CA2,0x8D21}, {0x8CA7,0x8D2B}, {0x8CA8,0x8D27}, {0x8CA9,0x8D29}, 
+  {0x8CAA,0x8D2A}, {0x8CAB,0x8D2F}, {0x8CAC,0x8D23}, {0x8CAF,0x8D2E}, {0x8CB0,0x8D33}, 
+  {0x8CB2,0x8D40}, {0x8CB3,0x8D30}, {0x8CB4,0x8D35}, {0x8CB6,0x8D2C}, {0x8CB7,0x4E70}, 
+  {0x8CB8,0x8D37}, {0x8CBA,0x8D36}, {0x8CBB,0x8D39}, {0x8CBC,0x8D34}, {0x8CBD,0x8D3B}, 
+  {0x8CBF,0x8D38}, {0x8CC0,0x8D3A}, {0x8CC1,0x8D32}, {0x8CC2,0x8D42}, {0x8CC3,0x8D41}, 
+  {0x8CC4,0x8D3F}, {0x8CC5,0x8D45}, {0x8CC7,0x8D44}, {0x8CC8,0x8D3E}, {0x8CCA,0x8D3C}, 
+  {0x8CD1,0x8D48}, {0x8CD2,0x8D4A}, {0x8CD3,0x5BBE}, {0x8CD5,0x8D47}, {0x8CDA,0x8D49}, 
+  {0x8CDC,0x8D50}, {0x8CDE,0x8D4F}, {0x8CE0,0x8D54}, {0x8CE1,0x8D53}, {0x8CE2,0x8D24}, 
+  {0x8CE3,0x5356}, {0x8CE4,0x8D31}, {0x8CE6,0x8D4B}, {0x8CE7,0x8D55}, {0x8CEA,0x8D28}, 
+  {0x8CEB,0x8D4D}, {0x8CEC,0x8D26}, {0x8CED,0x8D4C}, {0x8CF4,0x8D56}, {0x8CFA,0x8D5A}, 
+  {0x8CFB,0x8D59}, {0x8CFC,0x8D2D}, {0x8CFD,0x8D5B}, {0x8CFE,0x8D5C}, {0x8D04,0x8D3D}, 
+  {0x8D05,0x8D58}, {0x8D08,0x8D60}, {0x8D0A,0x8D5E}, {0x8D0B,0x8D5D}, {0x8D0D,0x8D61}, 
+  {0x8D0F,0x8D62}, {0x8D10,0x8D46}, {0x8D16,0x8D4E}, {0x8D1B,0x8D63}, {0x8D1C,0x8D43}, 
+  {0x8D95,0x8D76}, {0x8D99,0x8D75}, {0x8DA8,0x8D8B}, {0x8DB2,0x8DB1}, {0x8E10,0x8DF5}, 
+  {0x8E34,0x8E0A}, {0x8E4C,0x8DC4}, {0x8E55,0x8DF8}, {0x8E63,0x8E52}, {0x8E7A,0x8DF7}, 
+  {0x8E89,0x8DB8}, {0x8E8A,0x8E0C}, {0x8E8B,0x8DFB}, {0x8E8D,0x8DC3}, {0x8E91,0x8E2F}, 
+  {0x8E92,0x8DDE}, {0x8E93,0x8E2C}, {0x8E9A,0x8DF9}, {0x8EA1,0x8E51}, {0x8EA5,0x8E7F}, 
+  {0x8EA6,0x8E9C}, {0x8EAA,0x8E8F}, {0x8EC0,0x8EAF}, {0x8ECA,0x8F66}, {0x8ECB,0x8F67}, 
+  {0x8ECC,0x8F68}, {0x8ECD,0x519B}, {0x8ED2,0x8F69}, {0x8ED4,0x8F6B}, {0x8EDB,0x8F6D}, 
+  {0x8EDF,0x8F6F}, {0x8EE4,0x8F77}, {0x8EEB,0x8F78}, {0x8EF2,0x8F71}, {0x8EF8,0x8F74}, 
+  {0x8EF9,0x8F75}, {0x8EFA,0x8F7A}, {0x8EFB,0x8F72}, {0x8EFC,0x8F76}, {0x8EFE,0x8F7C}, 
+  {0x8F03,0x8F83}, {0x8F05,0x8F82}, {0x8F07,0x8F81}, {0x8F09,0x8F7D}, {0x8F0A,0x8F7E}, 
+  {0x8F12,0x8F84}, {0x8F14,0x8F85}, {0x8F15,0x8F7B}, {0x8F1B,0x8F86}, {0x8F1C,0x8F8E}, 
+  {0x8F1D,0x8F89}, {0x8F1E,0x8F8B}, {0x8F1F,0x8F8D}, {0x8F25,0x8F8A}, {0x8F26,0x8F87}, 
+  {0x8F29,0x8F88}, {0x8F2A,0x8F6E}, {0x8F2F,0x8F91}, {0x8F33,0x8F8F}, {0x8F38,0x8F93}, 
+  {0x8F3B,0x8F90}, {0x8F3E,0x8F97}, {0x8F3F,0x8206}, {0x8F42,0x6BC2}, {0x8F44,0x8F96}, 
+  {0x8F45,0x8F95}, {0x8F46,0x8F98}, {0x8F49,0x8F6C}, {0x8F4D,0x8F99}, {0x8F4E,0x8F7F}, 
+  {0x8F54,0x8F9A}, {0x8F5F,0x8F70}, {0x8F61,0x8F94}, {0x8F62,0x8F79}, {0x8F64,0x8F73}, 
+  {0x8FA6,0x529E}, {0x8FAD,0x8F9E}, {0x8FAE,0x8FAB}, {0x8FAF,0x8FA9}, {0x8FB2,0x519C}, 
+  {0x9015,0x8FF3}, {0x9019,0x8FD9}, {0x9023,0x8FDE}, {0x9032,0x8FDB}, {0x904B,0x8FD0}, 
+  {0x904E,0x8FC7}, {0x9054,0x8FBE}, {0x9055,0x8FDD}, {0x905C,0x900A}, {0x905E,0x9012}, 
+  {0x9060,0x8FDC}, {0x9069,0x9002}, {0x9072,0x8FDF}, {0x9077,0x8FC1}, {0x9078,0x9009}, 
+  {0x907A,0x9057}, {0x907C,0x8FBD}, {0x9081,0x8FC8}, {0x9084,0x8FD8}, {0x9087,0x8FE9}, 
+  {0x908A,0x8FB9}, {0x908F,0x903B}, {0x9090,0x9026}, {0x90DF,0x90CF}, {0x90F5,0x90AE}, 
+  {0x9106,0x90D3}, {0x9109,0x4E61}, {0x9112,0x90B9}, {0x9114,0x90AC}, {0x9116,0x90E7}, 
+  {0x9127,0x9093}, {0x912D,0x90D1}, {0x9130,0x90BB}, {0x9132,0x90F8}, {0x9134,0x90BA}, 
+  {0x9136,0x90D0}, {0x913A,0x909D}, {0x9148,0x90E6}, {0x9196,0x915D}, {0x919C,0x4E11}, 
+  {0x91AB,0x533B}, {0x91AC,0x9171}, {0x91C0,0x917F}, {0x91C1,0x8845}, {0x91C3,0x917E}, 
+  {0x91C5,0x917D}, {0x91CB,0x91CA}, {0x91D2,0x9485}, {0x91D3,0x9486}, {0x91D4,0x9487}, 
+  {0x91D5,0x948C}, {0x91D7,0x948A}, {0x91D8,0x9489}, {0x91D9,0x948B}, {0x91DD,0x9488}, 
+  {0x91E3,0x9493}, {0x91E4,0x9490}, {0x91E7,0x948F}, {0x91E9,0x9492}, {0x91F5,0x9497}, 
+  {0x91F7,0x948D}, {0x91F9,0x9495}, {0x91FA,0x948E}, {0x9200,0x94AF}, {0x9201,0x94AB}, 
+  {0x9204,0x94AD}, {0x9208,0x949A}, {0x9209,0x94A0}, {0x920D,0x949D}, {0x920E,0x94A9}, 
+  {0x9210,0x94A4}, {0x9211,0x94A3}, {0x9214,0x949E}, {0x9215,0x94AE}, {0x921E,0x94A7}, 
+  {0x9223,0x9499}, {0x9225,0x94AC}, {0x9226,0x949B}, {0x9227,0x94AA}, {0x922E,0x94CC}, 
+  {0x9230,0x94C8}, {0x9233,0x94B6}, {0x9234,0x94C3}, {0x9237,0x94B4}, {0x9238,0x94B9}, 
+  {0x9239,0x94CD}, {0x923A,0x94B0}, {0x923D,0x94B8}, {0x923E,0x94C0}, {0x923F,0x94BF}, 
+  {0x9240,0x94BE}, {0x9245,0x949C}, {0x9248,0x94CA}, {0x9249,0x94C9}, {0x924D,0x94CB}, 
+  {0x9251,0x94C2}, {0x9255,0x94B7}, {0x9257,0x94B3}, {0x925A,0x94C6}, {0x925B,0x94C5}, 
+  {0x925E,0x94BA}, {0x9262,0x94B5}, {0x9266,0x94B2}, {0x926C,0x94BC}, {0x926D,0x94BD}, 
+  {0x9278,0x94F0}, {0x927A,0x94D2}, {0x927B,0x94EC}, {0x927F,0x94EA}, {0x9280,0x94F6}, 
+  {0x9283,0x94F3}, {0x9285,0x94DC}, {0x9291,0x94E3}, {0x9293,0x94E8}, {0x9296,0x94E2}, 
+  {0x9298,0x94ED}, {0x929A,0x94EB}, {0x929C,0x8854}, {0x92A0,0x94D1}, {0x92A3,0x94F7}, 
+  {0x92A5,0x94F1}, {0x92A6,0x94DF}, {0x92A8,0x94F5}, {0x92A9,0x94E5}, {0x92AA,0x94D5}, 
+  {0x92AB,0x94EF}, {0x92AC,0x94D0}, {0x92B1,0x94DE}, {0x92B7,0x9500}, {0x92B9,0x9508}, 
+  {0x92BB,0x9511}, {0x92BC,0x9509}, {0x92C1,0x94DD}, {0x92C3,0x9512}, {0x92C5,0x950C}, 
+  {0x92C7,0x94A1}, {0x92CC,0x94E4}, {0x92CF,0x94D7}, {0x92D2,0x950B}, {0x92DD,0x950A}, 
+  {0x92DF,0x9513}, {0x92E3,0x94D8}, {0x92E4,0x9504}, {0x92E5,0x9503}, {0x92E6,0x9514}, 
+  {0x92E8,0x9507}, {0x92EA,0x94FA}, {0x92ED,0x9510}, {0x92EE,0x94D6}, {0x92EF,0x9506}, 
+  {0x92F0,0x9502}, {0x92F1,0x94FD}, {0x92F6,0x950D}, {0x92F8,0x952F}, {0x92FC,0x94A2}, 
+  {0x9301,0x951E}, {0x9306,0x9516}, {0x9307,0x952B}, {0x9308,0x9529}, {0x9310,0x9525}, 
+  {0x9312,0x9515}, {0x9315,0x951F}, {0x9318,0x9524}, {0x9319,0x9531}, {0x931A,0x94EE}, 
+  {0x931B,0x951B}, {0x931F,0x952C}, {0x9320,0x952D}, {0x9322,0x94B1}, {0x9326,0x9526}, 
+  {0x9328,0x951A}, {0x932B,0x9521}, {0x932E,0x9522}, {0x932F,0x9519}, {0x9332,0x5F55}, 
+  {0x9333,0x9530}, {0x9338,0x94FC}, {0x9340,0x951D}, {0x9341,0x9528}, {0x9343,0x952A}, 
+  {0x9346,0x9494}, {0x9347,0x9534}, {0x934B,0x9505}, {0x934D,0x9540}, {0x9354,0x9537}, 
+  {0x9358,0x94E1}, {0x935B,0x953B}, {0x9364,0x9538}, {0x9365,0x9532}, {0x9369,0x9518}, 
+  {0x936C,0x9539}, {0x9370,0x953E}, {0x9375,0x952E}, {0x9376,0x9536}, {0x937A,0x9517}, 
+  {0x937E,0x953A}, {0x9382,0x9541}, {0x9384,0x953F}, {0x9387,0x9545}, {0x938A,0x9551}, 
+  {0x9396,0x9501}, {0x9398,0x9549}, {0x93A2,0x94A8}, {0x93A3,0x84E5}, {0x93A6,0x954F}, 
+  {0x93A7,0x94E0}, {0x93A9,0x94E9}, {0x93AA,0x953C}, {0x93AC,0x9550}, {0x93AE,0x9547}, 
+  {0x93B0,0x9552}, {0x93B3,0x954D}, {0x93B5,0x9553}, {0x93B8,0x954C}, {0x93BF,0x954E}, 
+  {0x93C3,0x955E}, {0x93C7,0x955F}, {0x93C8,0x94FE}, {0x93CC,0x9546}, {0x93CD,0x9559}, 
+  {0x93D1,0x955D}, {0x93D7,0x94FF}, {0x93D8,0x9535}, {0x93DC,0x9557}, {0x93DD,0x9558}, 
+  {0x93DE,0x955B}, {0x93DF,0x94F2}, {0x93E1,0x955C}, {0x93E2,0x9556}, {0x93E4,0x9542}, 
+  {0x93E8,0x933E}, {0x93F5,0x94E7}, {0x93F7,0x9564}, {0x93F9,0x956A}, {0x9403,0x94D9}, 
+  {0x940B,0x94F4}, {0x9410,0x9563}, {0x9412,0x94F9}, {0x9413,0x9566}, {0x9414,0x9561}, 
+  {0x9418,0x949F}, {0x9419,0x956B}, {0x941D,0x9562}, {0x9420,0x9568}, {0x9426,0x950E}, 
+  {0x9427,0x950F}, {0x9428,0x9544}, {0x942E,0x9570}, {0x9432,0x956F}, {0x9433,0x956D}, 
+  {0x9435,0x94C1}, {0x9438,0x94CE}, {0x943A,0x94DB}, {0x943F,0x9571}, {0x9444,0x94F8}, 
+  {0x944A,0x956C}, {0x944C,0x9554}, {0x9452,0x9274}, {0x9454,0x9572}, {0x9460,0x94C4}, 
+  {0x9463,0x9573}, {0x9465,0x9565}, {0x946D,0x9567}, {0x9470,0x94A5}, {0x9472,0x9576}, 
+  {0x9477,0x954A}, {0x9479,0x9569}, {0x947C,0x9523}, {0x947D,0x94BB}, {0x947E,0x92AE}, 
+  {0x947F,0x51FF}, {0x9577,0x957F}, {0x9580,0x95E8}, {0x9582,0x95E9}, {0x9583,0x95EA}, 
+  {0x9586,0x95EB}, {0x9589,0x95ED}, {0x958B,0x5F00}, {0x958C,0x95F6}, {0x958E,0x95F3}, 
+  {0x958F,0x95F0}, {0x9591,0x95F2}, {0x9593,0x95F4}, {0x9594,0x95F5}, {0x9598,0x95F8}, 
+  {0x95A1,0x9602}, {0x95A3,0x9601}, {0x95A5,0x9600}, {0x95A8,0x95FA}, {0x95A9,0x95FD}, 
+  {0x95AB,0x9603}, {0x95AC,0x9606}, {0x95AD,0x95FE}, {0x95B2,0x9605}, {0x95B6,0x960A}, 
+  {0x95B9,0x9609}, {0x95BB,0x960E}, {0x95BC,0x960F}, {0x95BD,0x960D}, {0x95BE,0x9608}, 
+  {0x95BF,0x960C}, {0x95C3,0x9612}, {0x95C8,0x95F1}, {0x95CA,0x9614}, {0x95CB,0x9615}, 
+  {0x95CC,0x9611}, {0x95D0,0x9617}, {0x95D4,0x9616}, {0x95D5,0x9619}, {0x95D6,0x95EF}, 
+  {0x95DC,0x5173}, {0x95DE,0x961A}, {0x95E1,0x9610}, {0x95E5,0x95FC}, {0x9658,0x9649}, 
+  {0x965D,0x9655}, {0x9663,0x9635}, {0x9670,0x9634}, {0x9673,0x9648}, {0x9678,0x9646}, 
+  {0x967D,0x9633}, {0x9689,0x9667}, {0x968A,0x961F}, {0x968E,0x9636}, {0x9695,0x9668}, 
+  {0x969B,0x9645}, {0x96A8,0x968F}, {0x96AA,0x9669}, {0x96B1,0x9690}, {0x96B4,0x9647}, 
+  {0x96B8,0x96B6}, {0x96D6,0x867D}, {0x96D9,0x53CC}, {0x96DB,0x96CF}, {0x96DC,0x6742}, 
+  {0x96E2,0x79BB}, {0x96E3,0x96BE}, {0x96F2,0x4E91}, {0x96FB,0x7535}, {0x9727,0x96FE}, 
+  {0x973D,0x9701}, {0x9742,0x96F3}, {0x9744,0x972D}, {0x9748,0x7075}, {0x975A,0x9753}, 
+  {0x975C,0x9759}, {0x9768,0x9765}, {0x978F,0x5DE9}, {0x97BD,0x9792}, {0x97C3,0x9791}, 
+  {0x97C9,0x97AF}, {0x97CB,0x97E6}, {0x97CC,0x97E7}, {0x97D3,0x97E9}, {0x97D9,0x97EA}, 
+  {0x97DC,0x97EC}, {0x97DE,0x97EB}, {0x97FF,0x54CD}, {0x9801,0x9875}, {0x9802,0x9876}, 
+  {0x9803,0x9877}, {0x9805,0x9879}, {0x9806,0x987A}, {0x9807,0x9878}, {0x9808,0x987B}, 
+  {0x980A,0x987C}, {0x980C,0x9882}, {0x980E,0x9880}, {0x980F,0x9883}, {0x9810,0x9884}, 
+  {0x9811,0x987D}, {0x9812,0x9881}, {0x9813,0x987F}, {0x9817,0x9887}, {0x9818,0x9886}, 
+  {0x981C,0x988C}, {0x9821,0x9889}, {0x9824,0x9890}, {0x9826,0x988F}, {0x982D,0x5934}, 
+  {0x9830,0x988A}, {0x9837,0x9894}, {0x9838,0x9888}, {0x983B,0x9891}, {0x983D,0x9893}, 
+  {0x9846,0x9897}, {0x984C,0x9898}, {0x984D,0x989D}, {0x984E,0x989A}, {0x9853,0x989B}, 
+  {0x9854,0x989C}, {0x9858,0x613F}, {0x9859,0x98A1}, {0x985B,0x98A0}, {0x985E,0x7C7B}, 
+  {0x9862,0x989F}, {0x9865,0x98A2}, {0x9867,0x987E}, {0x986B,0x98A4}, {0x986C,0x98A5}, 
+  {0x986F,0x663E}, {0x9870,0x98A6}, {0x9871,0x9885}, {0x9873,0x989E}, {0x9874,0x98A7}, 
+  {0x98A8,0x98CE}, {0x98AE,0x98D1}, {0x98AF,0x98D2}, {0x98B6,0x98D3}, {0x98BC,0x98D5}, 
+  {0x98C4,0x98D8}, {0x98C6,0x98D9}, {0x98C8,0x98DA}, {0x98DB,0x98DE}, {0x98E0,0x9963}, 
+  {0x98E9,0x9968}, {0x98EA,0x996A}, {0x98EB,0x996B}, {0x98ED,0x996C}, {0x98EF,0x996D}, 
+  {0x98F2,0x996E}, {0x98F4,0x9974}, {0x98FC,0x9972}, {0x98FD,0x9971}, {0x98FE,0x9970}, 
+  {0x9903,0x997A}, {0x9905,0x997C}, {0x9909,0x9977}, {0x990A,0x517B}, {0x990C,0x9975}, 
+  {0x9911,0x997D}, {0x9912,0x9981}, {0x9913,0x997F}, {0x9918,0x4F59}, {0x991B,0x9984}, 
+  {0x991E,0x996F}, {0x9921,0x9985}, {0x9928,0x9986}, {0x9933,0x9967}, {0x9937,0x9987}, 
+  {0x993C,0x9969}, {0x993E,0x998F}, {0x993F,0x998A}, {0x9943,0x998D}, {0x9945,0x9992}, 
+  {0x9948,0x9990}, {0x9949,0x9991}, {0x994A,0x9993}, {0x994B,0x9988}, {0x994C,0x9994}, 
+  {0x9951,0x9965}, {0x9952,0x9976}, {0x9957,0x98E8}, {0x995C,0x990D}, {0x995E,0x998B}, 
+  {0x9962,0x9995}, {0x99AC,0x9A6C}, {0x99AD,0x9A6D}, {0x99AE,0x51AF}, {0x99B1,0x9A6E}, 
+  {0x99B3,0x9A70}, {0x99B4,0x9A6F}, {0x99C1,0x9A73}, {0x99D0,0x9A7B}, {0x99D1,0x9A7D}, 
+  {0x99D2,0x9A79}, {0x99D4,0x9A75}, {0x99D5,0x9A7E}, {0x99D8,0x9A80}, {0x99D9,0x9A78}, 
+  {0x99DB,0x9A76}, {0x99DD,0x9A7C}, {0x99DF,0x9A77}, {0x99E1,0x9A82}, {0x99E2,0x9A88}, 
+  {0x99ED,0x9A87}, {0x99F1,0x9A86}, {0x99FF,0x9A8F}, {0x9A01,0x9A8B}, {0x9A05,0x9A93}, 
+  {0x9A0D,0x9A92}, {0x9A0E,0x9A91}, {0x9A0F,0x9A90}, {0x9A16,0x9A9B}, {0x9A19,0x9A97}, 
+  {0x9A2B,0x9A9E}, {0x9A2D,0x9A98}, {0x9A2E,0x9A9D}, {0x9A30,0x817E}, {0x9A36,0x9A7A}, 
+  {0x9A37,0x9A9A}, {0x9A38,0x9A9F}, {0x9A3E,0x9AA1}, {0x9A40,0x84E6}, {0x9A41,0x9A9C}, 
+  {0x9A42,0x9A96}, {0x9A43,0x9AA0}, {0x9A44,0x9AA2}, {0x9A45,0x9A71}, {0x9A4A,0x9A85}, 
+  {0x9A4D,0x9A81}, {0x9A4F,0x9AA3}, {0x9A55,0x9A84}, {0x9A57,0x9A8C}, {0x9A5A,0x60CA}, 
+  {0x9A5B,0x9A7F}, {0x9A5F,0x9AA4}, {0x9A62,0x9A74}, {0x9A64,0x9AA7}, {0x9A65,0x9AA5}, 
+  {0x9A6A,0x9A8A}, {0x9AAF,0x80AE}, {0x9ACF,0x9AC5}, {0x9AD4,0x4F53}, {0x9AD5,0x9ACC}, 
+  {0x9AD6,0x9ACB}, {0x9B06,0x677E}, {0x9B22,0x9B13}, {0x9B25,0x6597}, {0x9B27,0x95F9}, 
+  {0x9B29,0x960B}, {0x9B2E,0x9604}, {0x9B31,0x90C1}, {0x9B4E,0x9B49}, {0x9B58,0x9B47}, 
+  {0x9B5A,0x9C7C}, {0x9B6F,0x9C81}, {0x9B74,0x9C82}, {0x9B77,0x9C7F}, {0x9B81,0x9C85}, 
+  {0x9B83,0x9C86}, {0x9B8E,0x9C87}, {0x9B90,0x9C90}, {0x9B91,0x9C8D}, {0x9B92,0x9C8B}, 
+  {0x9B9A,0x9C92}, {0x9B9D,0x9C9E}, {0x9B9E,0x9C95}, {0x9BAA,0x9C94}, {0x9BAB,0x9C9B}, 
+  {0x9BAD,0x9C91}, {0x9BAE,0x9C9C}, {0x9BC0,0x9CA7}, {0x9BC1,0x9CA0}, {0x9BC7,0x9CA9}, 
+  {0x9BC9,0x9CA4}, {0x9BCA,0x9CA8}, {0x9BD4,0x9CBB}, {0x9BD6,0x9CAD}, {0x9BDB,0x9CB7}, 
+  {0x9BDD,0x9CB4}, {0x9BE1,0x9CB1}, {0x9BE2,0x9CB5}, {0x9BE4,0x9CB2}, {0x9BE7,0x9CB3}, 
+  {0x9BE8,0x9CB8}, {0x9BEA,0x9CAE}, {0x9BEB,0x9CB0}, {0x9BF0,0x9CB6}, {0x9BF4,0x9CBA}, 
+  {0x9BFD,0x9CAB}, {0x9BFF,0x9CCA}, {0x9C08,0x9CBD}, {0x9C09,0x9CC7}, {0x9C0D,0x9CC5}, 
+  {0x9C10,0x9CC4}, {0x9C12,0x9CC6}, {0x9C13,0x9CC3}, {0x9C20,0x9CCB}, {0x9C23,0x9CA5}, 
+  {0x9C25,0x9CCF}, {0x9C28,0x9CCE}, {0x9C29,0x9CD0}, {0x9C2D,0x9CCD}, {0x9C31,0x9CA2}, 
+  {0x9C32,0x9CCC}, {0x9C33,0x9CD3}, {0x9C35,0x9CD8}, {0x9C37,0x9CA6}, {0x9C39,0x9CA3}, 
+  {0x9C3B,0x9CD7}, {0x9C3E,0x9CD4}, {0x9C45,0x9CD9}, {0x9C48,0x9CD5}, {0x9C49,0x9CD6}, 
+  {0x9C52,0x9CDF}, {0x9C54,0x9CDD}, {0x9C56,0x9CDC}, {0x9C57,0x9CDE}, {0x9C58,0x9C9F}, 
+  {0x9C5D,0x9CBC}, {0x9C5F,0x9C8E}, {0x9C67,0x9CE2}, {0x9C6D,0x9C9A}, {0x9C78,0x9C88}, 
+  {0x9C7A,0x9CA1}, {0x9CE5,0x9E1F}, {0x9CE9,0x9E20}, {0x9CEC,0x51EB}, {0x9CF3,0x51E4}, 
+  {0x9CF4,0x9E23}, {0x9CF6,0x9E22}, {0x9D06,0x9E29}, {0x9D07,0x9E28}, {0x9D09,0x9E26}, 
+  {0x9D15,0x9E35}, {0x9D1B,0x9E33}, {0x9D1D,0x9E32}, {0x9D1F,0x9E31}, {0x9D23,0x9E2A}, 
+  {0x9D26,0x9E2F}, {0x9D28,0x9E2D}, {0x9D2F,0x9E38}, {0x9D30,0x9E39}, {0x9D3B,0x9E3F}, 
+  {0x9D3F,0x9E3D}, {0x9D42,0x9E3A}, {0x9D51,0x9E43}, {0x9D52,0x9E46}, {0x9D53,0x9E41}, 
+  {0x9D5C,0x9E48}, {0x9D5D,0x9E45}, {0x9D60,0x9E44}, {0x9D61,0x9E49}, {0x9D6A,0x9E4C}, 
+  {0x9D6C,0x9E4F}, {0x9D6F,0x9E4E}, {0x9D72,0x9E4A}, {0x9D87,0x9E2B}, {0x9D89,0x9E51}, 
+  {0x9D93,0x9E4B}, {0x9D98,0x9E55}, {0x9D9A,0x9E57}, {0x9DA5,0x9E5B}, {0x9DA9,0x9E5C}, 
+  {0x9DAF,0x83BA}, {0x9DB4,0x9E64}, {0x9DBB,0x9E58}, {0x9DBC,0x9E63}, {0x9DC0,0x9E5A}, 
+  {0x9DC2,0x9E5E}, {0x9DC4,0x9E21}, {0x9DD3,0x9E67}, {0x9DD7,0x9E25}, {0x9DD9,0x9E37}, 
+  {0x9DDA,0x9E68}, {0x9DE5,0x9E36}, {0x9DE6,0x9E6A}, {0x9DEF,0x9E69}, {0x9DF2,0x9E6B}, 
+  {0x9DF3,0x9E47}, {0x9DF8,0x9E6C}, {0x9DF9,0x9E70}, {0x9DFA,0x9E6D}, {0x9E0C,0x9E71}, 
+  {0x9E15,0x9E2C}, {0x9E1A,0x9E66}, {0x9E1B,0x9E73}, {0x9E1D,0x9E42}, {0x9E1E,0x9E3E}, 
+  {0x9E7A,0x9E7E}, {0x9E7C,0x7877}, {0x9E7D,0x76D0}, {0x9E97,0x4E3D}, {0x9EA5,0x9EA6}, 
+  {0x9EA9,0x9EB8}, {0x9EBD,0x4E48}, {0x9ECC,0x9EC9}, {0x9EDE,0x70B9}, {0x9EE8,0x515A}, 
+  {0x9EF2,0x9EEA}, {0x9EF7,0x9EE9}, {0x9EFD,0x9EFE}, {0x9EFF,0x9F0B}, {0x9F09,0x9F0D}, 
+  {0x9F4A,0x9F50}, {0x9F4B,0x658B}, {0x9F4F,0x9F51}, {0x9F52,0x9F7F}, {0x9F54,0x9F80}, 
+  {0x9F59,0x9F85}, {0x9F5C,0x9F87}, {0x9F5F,0x9F83}, {0x9F60,0x9F86}, {0x9F61,0x9F84}, 
+  {0x9F66,0x9F88}, {0x9F6A,0x9F8A}, {0x9F6C,0x9F89}, {0x9F72,0x9F8B}, {0x9F77,0x9F8C}, 
+  {0x9F8D,0x9F99}, {0x9F90,0x5E9E}, {0x9F94,0x9F9A}, {0x9F95,0x9F9B}, {0x9F9C,0x9F9F}
+};
+
+
+
+/* the letters correspond to unicode characters which
+ * have Lu, Ll, Lt, Lm, Lo, Mn, Mc, or Me in their
+ * GENERAL CATEGORY */
+
+#define NUM_LETTER_INFO 274
+static const unirange letter_info[NUM_LETTER_INFO] = {
+  {0x41,0x5a}, {0x61,0x7a}, {0xaa,0xaa}, {0xb5,0xb5}, 
+  {0xba,0xba}, {0xc0,0xd6}, {0xd8,0xf6}, {0xf8,0x1f5}, 
+  {0x1fa,0x217}, {0x250,0x2a8}, {0x2b0,0x2b8}, {0x2bb,0x2c1}, 
+  {0x2d0,0x2d1}, {0x2e0,0x2e4}, {0x300,0x345}, {0x360,0x361}, 
+  {0x37a,0x37a}, {0x386,0x386}, {0x388,0x38a}, {0x38c,0x38c}, 
+  {0x38e,0x3a1}, {0x3a3,0x3ce}, {0x3d0,0x3d6}, {0x3da,0x3da}, 
+  {0x3dc,0x3dc}, {0x3de,0x3de}, {0x3e0,0x3e0}, {0x3e2,0x3f3}, 
+  {0x401,0x40c}, {0x40e,0x44f}, {0x451,0x45c}, {0x45e,0x481}, 
+  {0x483,0x486}, {0x490,0x4c4}, {0x4c7,0x4c8}, {0x4cb,0x4cc}, 
+  {0x4d0,0x4eb}, {0x4ee,0x4f5}, {0x4f8,0x4f9}, {0x531,0x556}, 
+  {0x559,0x559}, {0x561,0x587}, {0x591,0x5a1}, {0x5a3,0x5b9}, 
+  {0x5bb,0x5bd}, {0x5bf,0x5bf}, {0x5c1,0x5c2}, {0x5c4,0x5c4}, 
+  {0x5d0,0x5ea}, {0x5f0,0x5f2}, {0x621,0x63a}, {0x640,0x652}, 
+  {0x670,0x6b7}, {0x6ba,0x6be}, {0x6c0,0x6ce}, {0x6d0,0x6d3}, 
+  {0x6d5,0x6e8}, {0x6ea,0x6ed}, {0x901,0x903}, {0x905,0x939}, 
+  {0x93c,0x94d}, {0x951,0x954}, {0x958,0x963}, {0x981,0x983}, 
+  {0x985,0x98c}, {0x98f,0x990}, {0x993,0x9a8}, {0x9aa,0x9b0}, 
+  {0x9b2,0x9b2}, {0x9b6,0x9b9}, {0x9bc,0x9bc}, {0x9be,0x9c4}, 
+  {0x9c7,0x9c8}, {0x9cb,0x9cd}, {0x9d7,0x9d7}, {0x9dc,0x9dd}, 
+  {0x9df,0x9e3}, {0x9f0,0x9f1}, {0xa02,0xa02}, {0xa05,0xa0a}, 
+  {0xa0f,0xa10}, {0xa13,0xa28}, {0xa2a,0xa30}, {0xa32,0xa33}, 
+  {0xa35,0xa36}, {0xa38,0xa39}, {0xa3c,0xa3c}, {0xa3e,0xa42}, 
+  {0xa47,0xa48}, {0xa4b,0xa4d}, {0xa59,0xa5c}, {0xa5e,0xa5e}, 
+  {0xa70,0xa74}, {0xa81,0xa83}, {0xa85,0xa8b}, {0xa8d,0xa8d}, 
+  {0xa8f,0xa91}, {0xa93,0xaa8}, {0xaaa,0xab0}, {0xab2,0xab3}, 
+  {0xab5,0xab9}, {0xabc,0xac5}, {0xac7,0xac9}, {0xacb,0xacd}, 
+  {0xae0,0xae0}, {0xb01,0xb03}, {0xb05,0xb0c}, {0xb0f,0xb10}, 
+  {0xb13,0xb28}, {0xb2a,0xb30}, {0xb32,0xb33}, {0xb36,0xb39}, 
+  {0xb3c,0xb43}, {0xb47,0xb48}, {0xb4b,0xb4d}, {0xb56,0xb57}, 
+  {0xb5c,0xb5d}, {0xb5f,0xb61}, {0xb82,0xb83}, {0xb85,0xb8a}, 
+  {0xb8e,0xb90}, {0xb92,0xb95}, {0xb99,0xb9a}, {0xb9c,0xb9c}, 
+  {0xb9e,0xb9f}, {0xba3,0xba4}, {0xba8,0xbaa}, {0xbae,0xbb5}, 
+  {0xbb7,0xbb9}, {0xbbe,0xbc2}, {0xbc6,0xbc8}, {0xbca,0xbcd}, 
+  {0xbd7,0xbd7}, {0xc01,0xc03}, {0xc05,0xc0c}, {0xc0e,0xc10}, 
+  {0xc12,0xc28}, {0xc2a,0xc33}, {0xc35,0xc39}, {0xc3e,0xc44}, 
+  {0xc46,0xc48}, {0xc4a,0xc4d}, {0xc55,0xc56}, {0xc60,0xc61}, 
+  {0xc82,0xc83}, {0xc85,0xc8c}, {0xc8e,0xc90}, {0xc92,0xca8}, 
+  {0xcaa,0xcb3}, {0xcb5,0xcb9}, {0xcbe,0xcc4}, {0xcc6,0xcc8}, 
+  {0xcca,0xccd}, {0xcd5,0xcd6}, {0xcde,0xcde}, {0xce0,0xce1}, 
+  {0xd02,0xd03}, {0xd05,0xd0c}, {0xd0e,0xd10}, {0xd12,0xd28}, 
+  {0xd2a,0xd39}, {0xd3e,0xd43}, {0xd46,0xd48}, {0xd4a,0xd4d}, 
+  {0xd57,0xd57}, {0xd60,0xd61}, {0xe01,0xe2e}, {0xe30,0xe3a}, 
+  {0xe40,0xe4e}, {0xe81,0xe82}, {0xe84,0xe84}, {0xe87,0xe88}, 
+  {0xe8a,0xe8a}, {0xe8d,0xe8d}, {0xe94,0xe97}, {0xe99,0xe9f}, 
+  {0xea1,0xea3}, {0xea5,0xea5}, {0xea7,0xea7}, {0xeaa,0xeab}, 
+  {0xead,0xeae}, {0xeb0,0xeb9}, {0xebb,0xebd}, {0xec0,0xec4}, 
+  {0xec6,0xec6}, {0xec8,0xecd}, {0xedc,0xedd}, {0xf18,0xf19}, 
+  {0xf35,0xf35}, {0xf37,0xf37}, {0xf39,0xf39}, {0xf40,0xf47}, 
+  {0xf49,0xf69}, {0xf71,0xf84}, {0xf86,0xf87}, {0xf90,0xf95}, 
+  {0xf97,0xf97}, {0xf99,0xfad}, {0xfb1,0xfb7}, {0xfb9,0xfb9}, 
+  {0x10a0,0x10c5}, {0x10d0,0x10f6}, {0x1100,0x1159}, {0x115f,0x11a2}, 
+  {0x11a8,0x11f9}, {0x1e00,0x1e9b}, {0x1ea0,0x1ef9}, {0x1f00,0x1f15}, 
+  {0x1f18,0x1f1d}, {0x1f20,0x1f45}, {0x1f48,0x1f4d}, {0x1f50,0x1f57}, 
+  {0x1f59,0x1f59}, {0x1f5b,0x1f5b}, {0x1f5d,0x1f5d}, {0x1f5f,0x1f7d}, 
+  {0x1f80,0x1fb4}, {0x1fb6,0x1fbc}, {0x1fbe,0x1fbe}, {0x1fc2,0x1fc4}, 
+  {0x1fc6,0x1fcc}, {0x1fd0,0x1fd3}, {0x1fd6,0x1fdb}, {0x1fe0,0x1fec}, 
+  {0x1ff2,0x1ff4}, {0x1ff6,0x1ffc}, {0x207f,0x207f}, {0x20d0,0x20e1}, 
+  {0x2102,0x2102}, {0x2107,0x2107}, {0x210a,0x2113}, {0x2115,0x2115}, 
+  {0x2118,0x211d}, {0x2124,0x2124}, {0x2126,0x2126}, {0x2128,0x2128}, 
+  {0x212a,0x2131}, {0x2133,0x2138}, {0x3005,0x3005}, {0x302a,0x302f}, 
+  {0x3031,0x3035}, {0x3041,0x3094}, {0x3099,0x309e}, {0x30a1,0x30fa}, 
+  {0x30fc,0x30fe}, {0x3105,0x312c}, {0x3131,0x318e}, {0x4e00,0x9fa5}, 
+  {0xac00,0xd7a3}, {0xf900,0xfa2d}, {0xfb00,0xfb06}, {0xfb13,0xfb17}, 
+  {0xfb1e,0xfb28}, {0xfb2a,0xfb36}, {0xfb38,0xfb3c}, {0xfb3e,0xfb3e}, 
+  {0xfb40,0xfb41}, {0xfb43,0xfb44}, {0xfb46,0xfbb1}, {0xfbd3,0xfd3d}, 
+  {0xfd50,0xfd8f}, {0xfd92,0xfdc7}, {0xfdf0,0xfdfb}, {0xfe20,0xfe23}, 
+  {0xfe70,0xfe72}, {0xfe74,0xfe74}, {0xfe76,0xfefc}, {0xff21,0xff3a}, 
+  {0xff41,0xff5a}, {0xff66,0xffbe}, {0xffc2,0xffc7}, {0xffca,0xffcf}, 
+  {0xffd2,0xffd7}, {0xffda,0xffdc}
+};
+
+
+/* the digits correspond to unicode characters which
+ * have Nd in their GENERAL CATEGORY */
+
+#define NUM_DIGIT_INFO 16
+static const unirange digit_info[NUM_DIGIT_INFO] = {
+  {0x30,0x39}, {0x660,0x669}, {0x6f0,0x6f9}, {0x966,0x96f}, 
+  {0x9e6,0x9ef}, {0xa66,0xa6f}, {0xae6,0xaef}, {0xb66,0xb6f}, 
+  {0xbe7,0xbef}, {0xc66,0xc6f}, {0xce6,0xcef}, {0xd66,0xd6f}, 
+  {0xe50,0xe59}, {0xed0,0xed9}, {0xf20,0xf29}, {0xff10,0xff19}
+};
+
+
+/* the spaces correspond to unicode characters which
+ * have Zs, Zl, or Zp in their GENERAL CATEGORY */
+
+#define NUM_SPACE_INFO 5
+static const unirange space_info[NUM_SPACE_INFO] = {
+  {0x20,0x20}, {0xa0,0xa0}, {0x2000,0x200b}, {0x2028,0x2029}, 
+  {0x3000,0x3000}
+};
+
+
+
+/* parse_utf8_char parses the next utf-8 character, placing its
+ * unicode equivalent in *value. The length of the utf-8 character
+ * is returned */
+int parse_utf8_char(const unsigned char *here,
+		    const unsigned char *end,
+		    unsigned short *value) {
+  unsigned short c1;
+  unsigned short c2;
+  unsigned short c3;
+  
+  *value = 0; /* will be the value for illegal characters */
+  
+  if (here <= end) {
+    c1 = (unsigned short)(*here);
+    
+    if (c1 <= 0x7f) {
+      /* found a one-byte character */
+      *value = c1;
+      return 1;
+      
+    } else if (c1 >= 0xc0 && c1 <= 0xdf && here+1 <= end &&
+	       (c2=(unsigned short)(*(here+1))) >= 0x80) {
+      /* found a two-byte character */
+      *value = ((c1 & 0x1f) << 6) + (c2 & 0x3f);
+      return 2;
+      
+    } else if (c1 >= 0xe0 && c1 <= 0xef && here+2 <= end &&
+	       (c2=(unsigned int)(*(here+1))) >= 0x80 &&
+	       (c3=(unsigned int)(*(here+2))) >= 0x80) {
+      /* found a three-byte character */
+      *value = ((c1 & 0xf) << 12) + ((c2 & 0x3f) << 6) +
+	(c3 & 0x3f);
+      return 3;
+      
+    } else {
+      /* error in encoding, return the length as 1 */
+      return 1;
+    }
+  }
+
+  /* end of string */
+  return 0;
+}
+
+
+/* output_utf8_char encodes a unicode character as a UTF-8 character.
+ * The length of the encoding is returned. If the string was not
+ * long enough to encode the character 0 is returned. */
+int output_utf8_char (unsigned short value,
+		      unsigned char *here,
+		      unsigned char *end) {
+  int len = (int)(end - here + 1); /* end is the last character */
+  if (value < 0x80) {
+    /* will be encoded in one byte */
+    if (len >= 1) {
+      *here = (unsigned char)value;
+      return 1;
+    }
+
+  } else if (value < 0x800) {
+    /* will be encoded in two bytes */
+    if (len >= 2) {
+      *here++ = 0xc0 | (unsigned char)((value >> 6) & 0x1f);
+      *here = 0x80 | (unsigned char)(value & 0x3f);
+
+      return 2;
+    }
+
+  } else {
+    /* will be encoded in three bytes */
+    if (len >= 3) {
+      *here++ = 0xe0 | (unsigned char)((value >> 12) & 0xf);
+      *here++ = 0x80 | (unsigned char)((value >> 6) & 0x3f);
+      *here = 0x80 | (unsigned char)(value & 0x3f);
+      return 3;
+    }
+  }
+
+  return 0;
+}
+
+
+static int lookup_decompose_table (unsigned short value) {
+  int first = 0;
+  int last = NUM_DECOMPOSE_INFO;
+  int here;
+
+  while (first < last) {
+    here = (last-first)/2 + first;
+    if (value < decompose_info[here].ch) {
+      last = here;
+    } else if (value > decompose_info[here].ch) {
+      first = here+1;
+    } else {
+      return here;
+    }
+  }
+
+  return -1;
+}
+
+/* decompose_str will decompose a unicode string into its canonical
+ * equivalents. NULL is returned if the input array was not 
+ * large enough to contain the fully decomposed string (the array
+ * will be in a correct, but partially decomposed state). The input 
+ * must be null-terminated. */
+unsigned short *decompose_str (unsigned short *input,
+			       int max_output_len) {
+  int curpos = 0;
+  int curlen = unicode_strlen (input);
+  int tablepos = 0;
+  int leninc;
+  int i;
+
+  while (input[curpos] != 0) {
+    tablepos = lookup_decompose_table (input[curpos]);
+    if (tablepos >= 0) {
+      /* found a decomposition */
+      leninc = unicode_strnlen (decompose_info[tablepos].str, 3)-1;
+      if (curlen+leninc < max_output_len) {
+	/* enough space for this decomposition */
+
+	if (leninc > 1) {
+	  /* we have to shift the array along */
+	  for (i=curlen-1; i>=curpos; i--) {
+	    input[i+leninc] = input[i];
+	  }
+	  input[curlen+leninc] = 0;
+	  curlen += leninc;
+	}
+
+	/* decompose the character */
+	for (i=0; i<=leninc; i++) {
+	  input[curpos+i] = decompose_info[tablepos].str[i];
+	}
+
+	/* note: curpos is not incremented because the decomposed */
+	/*       characters might need decomposing */
+
+      } else {
+	/* no space left in string */
+	return NULL;
+      }
+
+    } else {
+      /* the character cannot be decomposed */
+      curpos++;
+    }
+  }
+
+  return input;
+}
+
+
+
+/* unicode_cat_data is a combination of the letter, digit, and
+ * space information in a form that is quick to look up.
+ * The information about each byte is stored in two bits
+ *
+ * 00 - neither letter, digit or space
+ * 01 - letter
+ * 10 - space
+ * 11 - digit
+ *
+ * You can test for letter | space by looking at the right
+ * column
+ */
+unsigned long *unicode_cat_data;
+
+void create_unicat_data () {
+  int i=0;
+  int min_start=0;
+  int min_end=0;
+  register unsigned long min_value=0; /* filling the whole byte */
+  
+  const unirange *letter_here = letter_info;
+  const unirange *letter_end = letter_info+NUM_LETTER_INFO;
+  const unirange *digit_here = digit_info;
+  const unirange *digit_end = digit_info+NUM_DIGIT_INFO;
+  const unirange *space_here = space_info;
+  const unirange *space_end = space_info+NUM_SPACE_INFO;
+
+  if (unicode_cat_data != NULL) return;
+  unicode_cat_data = malloc (0x10000/4);
+  if (unicode_cat_data == NULL) return;
+  
+  while (i <= 0xffff) {
+    /* decide what to fill with next */
+    min_start = i;
+    min_end = 0xffff;
+    min_value = 0; /* 00 */
+    
+    while (letter_here < letter_end && letter_here->last < i) letter_here++;
+    if (letter_here < letter_end && letter_here->last <= min_end) {
+      min_start = letter_here->first;
+      min_end = letter_here->last;
+      min_value = 0x55555555; /* 01 */
+    }
+    
+    while (digit_here < digit_end && digit_here->last < i) digit_here++;
+    if (digit_here < digit_end && digit_here->last <= min_end) {
+      min_start = digit_here->first;
+      min_end = digit_here->last;
+      min_value = 0xffffffff; /* 11 */
+    }
+    
+    while (space_here < space_end && space_here->last < i) space_here++;
+    if (space_here < space_end && space_here->last <= min_end) {
+      min_start = space_here->first;
+      min_end = space_here->last;
+      min_value = 0xaaaaaaaa; /* 10 */
+    }
+
+    if (min_start < i) min_start = i;
+    else if (min_start > i) {
+      min_end = min_start-1;
+      min_start = i;
+      min_value = 0; /* 00 */
+    }
+
+    /* fill the entries from min_start to min_end with min_value */
+    while (i <= min_end) {
+      /* special version for common case */
+      if (i % 16 == 0) {
+	unicode_cat_data[i/16] = min_value; /* doesn't matter if too long */
+	i += 16;
+	if (i > min_end) {
+	  i = min_end+1;
+	  break;
+	}
+	
+      } else {
+	register unsigned long mask = 3 << ((i % 16) * 2);
+	unicode_cat_data[i/16] = (unicode_cat_data[i/16] & (~mask)) |
+				  (min_value & mask);
+	i++;
+      }
+    }
+  }
+}
+
+/* does a binary search on a range table */
+static int in_unirange (const unirange *info, int num_info,
+			unsigned short value) {
+  int first = 0;
+  int last = num_info;
+  int here;
+
+  while (first < last) {
+    here = (last-first)/2 + first;
+    if (value < info[here].first) {
+      last = here;
+    } else if (value > info[here].last) {
+      first = here+1;
+    } else {
+      return 1;
+    }
+  }
+
+  return 0;
+}
+
+
+
+/* tests to see whether 'value' is a valid Unicode letter */
+int is_unicode_letter (unsigned short value) {
+  if (unicode_cat_data == NULL) create_unicat_data ();
+  if (unicode_cat_data == NULL) {
+    /* use old method */
+    return in_unirange(letter_info, NUM_LETTER_INFO, value);
+  }
+
+  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x1);
+}
+
+/* tests to see whether 'value' is a valid Unicode digit */
+int is_unicode_digit (unsigned short value) {
+  if (unicode_cat_data == NULL) create_unicat_data ();
+  if (unicode_cat_data == NULL) {
+    /* use old method */
+    return in_unirange(digit_info, NUM_DIGIT_INFO, value);
+  }
+
+  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x3);
+}
+
+/* tests to see whether 'value' is a valid Unicode letter or 
+ * digit */
+int is_unicode_letdig (unsigned short value) {
+  if (unicode_cat_data == NULL) create_unicat_data ();
+  if (unicode_cat_data == NULL) {
+    /* use old method */
+    return (in_unirange(letter_info, NUM_LETTER_INFO, value) ||
+	    in_unirange(digit_info, NUM_DIGIT_INFO, value));
+    
+  }
+
+  return ((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x1);
+}
+
+/* tests to see whether 'value' is a valid space
+ * The test includes both "C" spaces and "Unicode" spaces, i.e. 
+ * form-feed, newline, carriage return, horizontal tab,
+ * vertical tab, and the Zs, Zl, and Zp Unicode categorizations */
+int is_unicode_space (unsigned short value) {
+  if (value < 0x80) return isspace (value);
+  if (unicode_cat_data == NULL) create_unicat_data ();
+  if (unicode_cat_data == NULL) {
+    /* use old method */
+    return in_unirange(space_info, NUM_SPACE_INFO, value);
+  }
+
+  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x2);
+}
+
+/* returns the length of the unicode string */
+int unicode_strlen (const unsigned short *str) {
+  int len = 0;
+
+  /* keep going till you find the null-terminator */
+  while (*str != 0) {
+    len++;
+    str++;
+  }
+
+  return len;
+}
+
+/* returns the length of the unicode string, up to a maximum */
+int unicode_strnlen (const unsigned short *str, int max_length) {
+  int len = 0;
+
+  /* keep going till you find the null-terminator */
+  while (*str != 0 && len < max_length ) {
+    len++;
+    str++;
+  }
+
+  return len;
+}
+
+
+/* Does a binary search on a relate table, returns -1 if it is not
+ * found. */
+static int search_unirelate (const unirelate *info, int num_info,
+			     unsigned short value) {
+  int first = 0;
+  int last = num_info;
+  int here;
+
+  while (first < last) {
+    here = (last-first)/2 + first;
+    if (value < info[here].ch1) {
+      last = here;
+    } else if (value > info[here].ch1) {
+      first = here+1;
+    } else {
+      return here;
+    }
+  }
+
+  return -1;
+}
+
+
+/* returns the upper-case equivalent of value */
+unsigned short unicode_toupper (unsigned short value) {
+  int related = search_unirelate (toupper_info, NUM_TOUPPER_INFO, value);
+  if (related >= 0) {
+    value = toupper_info[related].ch2;
+  }
+  return value;
+}
+
+/* returns the lower-case equivalent of value */
+unsigned short unicode_tolower (unsigned short value) {
+  int related = search_unirelate (tolower_info, NUM_TOLOWER_INFO, value);
+  if (related >= 0) {
+    value = tolower_info[related].ch2;
+  }
+  return value;
+}
+
+/* returns the simplified Chinese character equivalent of 
+ * another Chinese character */
+unsigned short unicode_tosimplified (unsigned short value) {
+  int related = search_unirelate (tosimplified_info, NUM_TOSIMPLIFIED_INFO, value);
+  if (related >= 0) {
+    value = tosimplified_info[related].ch2;
+  }
+  return value;
+}
+
+
+/* converts a utf-8 word (string with length stored in the first byte
+ * to a Unicode array. To handle all situations the output buffer should
+ * be 256 unsigned shorts long. The output will also have the length as
+ * the first entry. */
+unsigned short *utf8_word_to_unicode (const unsigned char *input,
+				      unsigned short *output,
+				      int max_output_length) {
+  int inlen = *input;
+  const unsigned char *inhere = input+1;
+  const unsigned char *inend = &inhere[inlen-1];
+  unsigned short c;
+  int clen;
+  
+  int outlen = 0;
+  unsigned short *outhere = output+1;
+  
+  while (inhere <= inend && inlen < max_output_length-1) {
+    /* decode the character */
+    clen = parse_utf8_char (inhere, inend, &c);
+    inhere += clen;
+
+    if (clen > 0) {
+      /* store the character */
+      *outhere = c;
+      outhere++;
+      outlen++;
+    }
+  }
+
+  output[0] = outlen;
+  return output;
+}
+
+
+/* converts a unicode word buffer (with the length stored in the
+ * entry) to a utf8 encoded word output (with the length stored in
+ * the first byte. Only 255 bytes (not characters) can be stored 
+ * in the output. */
+unsigned char *unicode_to_utf8_word (const unsigned short *input,
+				     unsigned char *output,
+				     int max_output_length) {
+  int inlen = *input;
+  const unsigned short *word = input + 1;
+  int in_i = 0;
+  int clen;
+
+  int outlen = 0;
+  unsigned char *outhere = output+1;
+  unsigned char *outend = output+max_output_length;
+
+  while (in_i < inlen) {
+    if ((clen=output_utf8_char(word[in_i], outhere, outend)) == 0) {
+      /* ran out of space to encode the character */
+      break;
+    }
+
+    outhere += clen;
+    outlen += clen;
+    in_i++;
+  }
+
+  output[0] = outlen;
+
+  return output;
+}
+
Index: /other-projects/trunk/greenorg/lib/unitool.h
===================================================================
--- /other-projects/trunk/greenorg/lib/unitool.h	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/unitool.h	(revision 14149)
@@ -0,0 +1,88 @@
+#ifndef UNITOOL_H
+#define UNITOOL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* This module is based on Unicode 2.1 */
+
+
+/* parse_utf8_char parses the next utf-8 character, placing its
+ * unicode equivalent in *value. The length of the utf-8 character
+ * is returned. end is the address of the last character. */
+int parse_utf8_char (const unsigned char *here,
+		     const unsigned char *end,
+		     unsigned short *value);
+
+/* output_utf8_char encodes a unicode character as a UTF-8 character.
+ * The length of the encoding is returned. If the string was not
+ * long enough to encode the character 0 is returned. end is the
+ * address of the last character */
+int output_utf8_char (unsigned short value,
+		      unsigned char *here,
+		      unsigned char *end);
+
+/* decompose_str will decompose a unicode string into its canonical
+ * equivalents. NULL is returned if the input array was not 
+ * large enough to contain the fully decomposed string (the array
+ * will be in a correct, but partially decomposed state). The input 
+ * must be null-terminated. */
+unsigned short *decompose_str (unsigned short *input,
+			       int max_output_len);
+
+/* tests to see whether 'value' is a valid Unicode letter */
+int is_unicode_letter (unsigned short value);
+
+/* tests to see whether 'value' is a valid Unicode digit */
+int is_unicode_digit (unsigned short value);
+
+/* tests to see whether 'value' is a valid Unicode letter or 
+ * digit */
+int is_unicode_letdig (unsigned short value);
+
+/* tests to see whether 'value' is a valid space
+ * The test includes both "C" spaces and "Unicode" spaces, i.e. 
+ * form-feed, newline, carriage return, horizontal tab,
+ * vertical tab, and the Zs, Zl, and Zp Unicode categorizations */
+int is_unicode_space (unsigned short value);
+
+/* returns the length of the unicode string */
+int unicode_strlen (const unsigned short *str);
+
+/* returns the length of the unicode string, up to a maximum */
+int unicode_strnlen (const unsigned short *str, int max_length);
+
+/* returns the upper-case equivalent of value */
+unsigned short unicode_toupper (unsigned short value);
+
+/* returns the lower-case equivalent of value */
+unsigned short unicode_tolower (unsigned short value);
+
+/* returns the simplified Chinese character equivalent of 
+ * another Chinese character */
+unsigned short unicode_tosimplified (unsigned short value);
+
+
+/* converts a utf-8 word (string with length stored in the first byte
+ * to a Unicode array. To handle all situations the output buffer should
+ * be 256 unsigned shorts long. The output will also have the length as
+ * the first entry. */
+unsigned short *utf8_word_to_unicode (const unsigned char *input,
+				      unsigned short *output,
+				      int max_output_length);
+
+/* converts a unicode word buffer (with the length stored in the
+ * entry) to a utf8 encoded word output (with the length stored in
+ * the first byte. Only 255 bytes (not characters) can be stored 
+ * in the output. */
+unsigned char *unicode_to_utf8_word (const unsigned short *input,
+				     unsigned char *output,
+				     int max_output_length);
+
+#ifdef __cplusplus
+	   }
+#endif
+
+#endif
Index: /other-projects/trunk/greenorg/lib/win32.mak
===================================================================
--- /other-projects/trunk/greenorg/lib/win32.mak	(revision 14149)
+++ /other-projects/trunk/greenorg/lib/win32.mak	(revision 14149)
@@ -0,0 +1,67 @@
+###########################################################################
+#
+# win32 makefile -- lib
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 1999  The New Zealand Digital Library Project
+#
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+
+GSDLHOME = ..
+
+AR = lib
+CC = cl
+CPPFLAGS = -GX
+
+DEFS = -D__WIN32__ -DHAVE_CONFIG_H -DPARADOCNUM -D_LITTLE_ENDIAN \
+       -DSHORT_SUFFIX
+INCLUDES = -I"$(GSDLHOME)" -I"$(GSDLHOME)\packages\mg\lib"
+
+COMPILE = $(CC) -c $(CPPFLAGS) $(DEFS) $(INCLUDES)
+
+.SUFFIXES:
+.SUFFIXES: .c .obj
+.c.obj:
+	$(COMPILE) $<
+
+.SUFFIXES: .cpp .obj
+.cpp.obj:
+	$(COMPILE) $< 
+
+HEADERS = cfgread.h fileutil.h gsdlunicode.h text_t.h display.h gsdlconf.h \
+	  gsdltimes.h gsdltools.h cnfgable.h cnfgator.h unitool.h
+
+SOURCES = cfgread.cpp fileutil.cpp gsdlunicode.cpp text_t.cpp display.cpp \
+	  gsdltimes.cpp gsdltools.cpp cnfgable.cpp cnfgator.cpp unicool.c
+
+OBJECTS = cfgread.obj fileutil.obj gsdlunicode.obj text_t.obj display.obj \
+	  gsdltimes.obj gsdltools.obj cnfgable.obj cnfgator.obj unitool.obj
+
+all: gsdllib.lib
+
+gsdllib.lib : $(OBJECTS)
+	if EXIST gsdllib.lib del gsdllib.lib
+	$(AR) /out:gsdllib.lib $(OBJECTS)
+
+clean:
+	del *.obj 
+	del gsdllib.lib
+
+install:
Index: /other-projects/trunk/greenorg/macros/base.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/base.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/base.dm	(revision 14149)
@@ -0,0 +1,139 @@
+package Global
+
+_httpwiki_ {http://greenstonewiki.cs.waikato.ac.nz/wiki/index.php}
+_httpwikifaq_{_httpwiki_/Greenstone_FAQ}
+_httpwikidec_{_httpwiki_/Example_collections}
+_httpwikitutorial_{_httpwiki_/Tutorial_exercises}
+_httpwikiworkshops_ {_httpwiki_/Greenstone_workshops}
+_httpwikiintn_ {_httpwiki_/Greenstone_language_support}
+_httpwikiintnmaintainers_ {_httpwiki_/Information_for_language_maintainers}
+_httpwikilocallibrary_ {_httpwiki_/Installing_Greenstone#What_is_the_difference_between_Greenstone.27s_local_library_and_web_library.3F}
+_httpwikicolcfg_ {_httpwiki_/Sample_collectcfg}
+_httpwikitutorial_ {_httpwiki_/gsdoc/tutorial}
+
+_httphistory_ {_httpwiki_/gsdoc/others/Greenstone_history.htm}
+_httpguide_ {http://prdownloads.sourceforge.net/greenstone/_1_-_2_.pdf}
+_http239guide_ {http://prdownloads.sourceforge.net/greenstone/_1_-2.39-_2_.pdf}
+_httpwindistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-2.72-win32.exe}
+_versionwindistro_ {2.72}
+_sizewindistro_ {53MB}
+_httpunixdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-2.72-unix.tar.gz}
+_versionunixdistro_ {2.72}
+_sizeunixdistro_ {47MB}
+_httpmacdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-2.72-macOSx.tar.gz}
+_versionmacdistro_ {2.72}
+_sizemacdistro_ {38MB}
+_httpsrcdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-2.72-src.tar.gz}
+_versionsrcdistro_ {2.72}
+_sizesrcdistro_ {20MB}
+_httpglidistro_ {http://prdownloads.sourceforge.net/greenstone/gli-client-2.72.zip}
+_versionglidistro_ {2.72}
+_sizeglidistro_ {5MB}
+
+
+_versionlangpack_ {2.62}
+_httpunixlangpackdistro_ {http://prdownloads.sourceforge.net/greenstone/glp-2.62-linux.bin}
+_sizeunixlangpackdistro_ {13MB}
+_httpwin32langpackdistro_ {http://prdownloads.sourceforge.net/greenstone/glp-2.62-win32.exe}
+_sizewin32langpackdistro_ {13MB}
+_httpmaclangpackdistro_ {http://prdownloads.sourceforge.net/greenstone/glp-2.62-macOSx.command}
+_sizemaclangpackdistro_ {13MB}
+
+_versionclassicpack_ {2.63}
+_httpclassicpackdistro_ {http://prdownloads.sourceforge.net/greenstone/gcip-2.63.zip}
+_sizeclassicpackdistro_ {6MB}
+
+_versionexportdistro_ {2.70}
+_httpexportdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-2.70-export.zip}
+_sizeexportdistro_ {20MB}
+_httpteachingmaterialdistro1day_ {http://prdownloads.sourceforge.net/greenstone/gsdl-workshop-materials-1day-jun2004.zip}
+_sizeteachingmaterialdistro1day_ {80MB}
+_httpteachingmaterialdistro3day_ {http://prdownloads.sourceforge.net/greenstone/gsdl-workshop-materials-3day-nov2003.zip}
+_sizeteachingmaterialdistro3day_ {55MB}
+_httpteachingmaterialdistro4day_ {http://prdownloads.sourceforge.net/greenstone/gsdl-workshop-materials-4day-sep2005.zip}
+_sizeteachingmaterialdistro4day_ {62MB}
+_httpdocumentedexamplecollectionsdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-documented-collections-jun2006.zip}
+_sizedocumentedexamplecollectionsdistro_ {43MB}
+
+_httptutorialexercisesdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-tutorial-exercises-mar2006.zip}
+_sizetutorialexercisesdistro_ {0.5MB}
+_httptutorialsamplefilesdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-tutorial-sample-files-mar2006.zip}
+_sizetutorialsamplefilesdistro_ {37MB}
+_httptutorialexercisesmultimediafilesdistro_ {http://prdownloads.sourceforge.net/greenstone/gsdl-tutorial-multimedia-files-mar2006.zip}
+_sizetutorialexercisesmultimediafilesdistro_ {63MB}
+
+_httporgdistro_ {http://prdownloads.sourceforge.net/greenstone/Organizer_v1.1.1.2.exe}
+_sizeorgdistro_ {3.5MB}
+
+_httpdocsdir_ {_httpprefix_/docs}
+
+_pagewidth_ {537}
+
+_httppagex_ {_gwcgi_?e=_compressedoptions_&a=p&p=_1_}
+
+_iconew_ {<img src="_httpimg_/new.gif">}
+
+_pageheading_ {<p class="title">_1_</p>}
+
+_subheading_ {<p class="subheading">_1_</p>}
+
+_pagescriptextra_ {}
+
+# gsimage should be used to define an instance of a flashy image
+# parameters are:
+# 1. the url to go to when the button is clicked
+# 2. the url of the "off" image
+# 3. the url of the "on" image
+# 4. the name of the image (must be unique)
+# 5. image alt text
+_gsimage_ {<a href="_1_" onMouseover="roll('_4_',1);" onMouseOut="roll('_4_',0);"><img
+name="_4_" src="_2_" onLoad="gbutton(this,'_3_');" border="0" alt="_5_" title="_5_"></a>}
+_gsimage_ [v=1] {<a href="_1_">_5_</a><br>}
+
+_imagepref_ {_gsimage_(_httppagex_(homepref),_httpiconcprefof_,_httpiconcprefon_,pref,_textimagepref_)}
+
+_javalinks_ {_imagepref_}
+_javalinks_ [v=1] {_imagepref_}
+
+_imagedocs_ {_gsimage_(_httpwiki_,_httpicontdocsof_,_httpicontdocson_,docs,_textimagedocs_)}
+_imagedownload_ {_gsimage_(_httppagex_(download),_httpicontdlof_,_httpicontdlon_,download,_textimagedownload_)}
+_imageexamples_ {_gsimage_(_httppagex_(examples),_httpicontexmplof_,_httpicontexmplon_,examples,_textimageexamples_)}
+_imagefaq_ {_gsimage_(_httpwikifaq_,_httpicontfaqof_,_httpicontfaqon_,faq,_textimagefaq_)}
+_imagesupport_ {_gsimage_(_httppagex_(support),_httpicontsupof_,_httpicontsupon_,support,_textimagesupport_)}
+
+_new_ {
+<table class="default">
+<tr>
+<td valign="top">_iconew_</td>
+<td>_1_</td>
+</tr>
+</table>
+}
+_newnoimg_ {
+<table class="default">
+<tr>
+<td valign="top" width="43"></td>
+<td>_1_</td>
+</tr>
+</table>
+}
+
+
+_content_ {
+<p><b>Error!!</b></p>
+}
+
+_sf_ {
+<p><img src="_httpimg_/tspace.gif" height="17" width="_pagewidth_"></p>
+<p><table border="0" width="_pagewidth_"><tr valign="top">
+<td>
+<a href="http://sourceforge.net"><img
+src="http://sflogo.sourceforge.net/sflogo.php?group_id=12123&type=1" width="88"
+height="31" border="0" alt="SourceForge Logo"></a></td>
+<td><font size="-1">_t17_</font></td>
+</tr></table>
+}
+
+
+
+
Index: /other-projects/trunk/greenorg/macros/english.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/english.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/english.dm	(revision 14149)
@@ -0,0 +1,924 @@
+package Global
+
+_t17_ {
+The downloads available from the <a href="_httppagex_(download)">download</a> page
+are hosted by <a href="http://sourceforge.net">Sourceforge</a>.
+}
+
+_textimagepref_ {Preferences page}
+
+_textimagedocs_ {Docs}
+_textimagedownload_ {Download}
+_textimagegsoc2007_ {Google Summer of Code 2007}
+_textimageexamples_ {Examples}
+_textimagesupport_ {Support}
+
+#------------------------------------------------------------
+# icons
+#------------------------------------------------------------
+
+## "PREFERENCES" ## top_nav_button ## cpref ##
+_httpiconcprefof_ {_httpimg_/cprefof.gif}
+_httpiconcprefon_ {_httpimg_/cprefon.gif}
+
+
+## "docs" ## nav_bar_button ## tdocs ##
+_httpicontdocsof_ {_httpimg_/tdocsof.gif}
+_httpicontdocson_ {_httpimg_/tdocson.gif}
+
+## "download" ## nav_bar_button ## tdl ##
+_httpicontdlof_ {_httpimg_/tdlof.gif}
+_httpicontdlon_ {_httpimg_/tdlon.gif}
+
+## "examples" ## nav_bar_button ## texmpl ##
+_httpicontexmplof_ {_httpimg_/texmplof.gif}
+_httpicontexmplon_ {_httpimg_/texmplon.gif}
+
+## "support" ## nav_bar_button ## tsup ##
+_httpicontsupof_ {_httpimg_/tsupof.gif}
+_httpicontsupon_ {_httpimg_/tsupon.gif}
+
+_textpagemoved_ {This page has been moved to the Greenstone wiki.}
+_textredirect_ {If you are not redirected automatically within a few seconds then please click on the link above.}
+
+#######################################################################
+
+package home
+
+_t1_ {About Greenstone}
+
+_t2_ {
+Greenstone is a suite of software for building and distributing digital
+library collections. It provides a new way of organizing information and
+publishing it on the Internet or on CD-ROM.  Greenstone is produced by the
+<b>New Zealand Digital Library Project</b> at the <b>University of
+Waikato</b>, and developed and distributed in cooperation with
+<b>UNESCO</b> and the <b>Human Info NGO</b>.  It is <b>open-source,
+<a href="#multilingual">multilingual</a></b> software, issued under the terms of the GNU General Public
+License. Read the <a href="_httppagex_(factsheet)">Greenstone Fact Sheet</a> for more information.
+}
+
+_namur_ {
+The Greenstone project is the seventh recipient of the biennial
+<a href="http://www.info.fundp.ac.be/~jbl/IFIP/award.html">Namur award</a>, which
+recognizes recipients for raising awareness internationally of the social
+implications of information and communication technologies.
+}
+
+_t3_ {
+UNESCO is running regional training workshops on the use of Greenstone.
+}
+
+_cdrom260_ {
+The UNESCO CD-ROM containing Greenstone 2.60, plus all documentation (English/French/Spanish/Russian), plus 11 documented example collections, plus associated software like Java and ImageMagick, is available at no charge from Jean-Claude Dauphin (jc.dauphin@unesco.org) or Susannah Farey (s.farey@unesco.org). CDS/ISIS users: download updated versions of <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/collect.cfg">collect\\isis-e\\etc\\collect.cfg</a> and <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/ISISPlug.pm">perllib\\plugins\\ISISPlug.pm</a> to fix problems building CDS/ISIS collections with Greenstone 2.60.
+}
+
+_cdrom270u_ {<i>(June 2006)</i> The UNESCO CD-ROM containing Greenstone 2.70u, plus all documentation (English/French/Spanish/Russian), plus 4 documented example collections, plus associated software like Java and ImageMagick, is available at no charge from Jean-Claude Dauphin (jc.dauphin@unesco.org) or Susannah Farey (s.farey@unesco.org).
+}
+
+
+
+_imarkonline_ {<i>(Feb 2006)</i> The United Nations Food and Agriculture Organization has produced an excellent self-instructional module on <a href="http://www.imarkgroup.org/">Digitization and Digital Libraries</a>, which includes a unit on Greenstone.
+}
+ 
+_greenstone271_ {<i>(Oct 2006)</i> <a href="_httppagex_(download)">Greenstone v2.71</a> released! A feature release containing lots and lots of improvements and new functionality. See the <a href="http://sourceforge.net/project/shownotes.php?release_id=454519&group_id=12123">release notes</a> for more information.
+}
+ 
+
+_greenstone270w_ {<i>(Jun 2006)</i> <a href="_httppagex_(download)">Greenstone v2.70w</a> released! A stable release corresponding to the Hawaii Greenstone v2.70w Workshop CD-ROM. See <a href="http://sourceforge.net/project/shownotes.php?release_id=421745&group_id=12123">release notes</a> for more information.
+}
+
+_greenstone272_ {<i>(Dec 2006)</i> <a href="_httppagex_(download)">Greenstone v2.72</a> released! A stable release containing new features and bug fixes. See the <a href="http://sourceforge.net/project/shownotes.php?group_id=12123&release_id=470853">release notes</a> for more information.
+
+}
+
+_remotegreenstone_ {
+<i>(Oct 2005)</i> Building collections on a remote Greenstone server<br />
+This scheme allows users to augment and edit collections that are held on a remote Greenstone server. Users work with a modified version of the Greenstone Librarian Interface but do not need to have Greenstone running locally. Multiple users can collaborate on the same collection (though not at the same time). <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/west-yorkshire/remote-greenstone.html">Here</a> are details of an experimental version that you can download (<a href="http://prdownload.berlios.de/gsdl-esdoc/gsdlremoto.pdf">En EspaÃÂ±ol</a>).
+}
+
+_gs3proto_ {
+Greenstone 3 is a complete redesign of Greenstone, with version 3.01 released on <a href="http://sourceforge.net/projects/greenstone3">sourceforge</a> in November 2005. This is our research version and is still incomplete; the production version (Greenstone 2) is recommended for almost all users (and is still being developed and improved). Greenstone 3 will serve existing collections without any change whatsoever, so there is no danger of becoming out-moded by continuing with Greenstone 2. <a href="http://www.greenstone.org/greenstone3.html">Greenstone 3 home page</a>.
+}
+
+_surveyheading_ {User Survey}
+
+_survey_ {
+<a href="http://www.ils.unc.edu/~sheble/greenstone/survey-report.html">Here</a> are the results of a Greenstone user survey undertaken in 2004-2005. Laura Sheble of the University of North Carolina is planning a new survey.
+}
+
+
+_t4_ {
+<a
+href="http://sourceforge.net/projects/greenstone/">Download</a> Greenstone v2.50.
+The Greenstone Librarian Interface (GLI),
+an easy-to-use frontend to Greenstone's collection-building
+functionality, has been extensively user tested and debugged. 
+If you haven't already tried it, now is a great
+time to do so (and if you ran into problems before, please try this new version).
+Greenstone 2.50 also includes the new (and already very popular) PagedImgPlug plugin for
+processing sequences of page images, a new classifier that displays a
+collage of the images in a collection, provision for incremental updates
+of Greenstone in the future, and many other bug fixes and improvements.
+}
+
+_t5_ {
+One of the trickier parts of using Greenstone is coming up with a
+configuration file for your collection. To help learn how to do it,
+several fully-documented example collections have been placed at <a
+href="http://nzdl.org">nzdl.org</a> which explain, on the collection home page, just how they have been put together.
+}
+
+_t6_ {
+The complete Greenstone interface, and all documentation, is available in
+<b>English</b>, <b>French</b>, <b>Spanish</b>, <b>Russian</b> and
+<b>Kazakh</b>.  Greenstone also has interfaces in many <a
+href="_httpwikiintn_">other languages</a>.  We are looking for <a
+href="_httpwikiintnmaintainers_">volunteers</a> to add new language
+interfaces and help maintain existing ones.
+}
+
+_t7_ {
+The aim of the Greenstone software is to empower users, particularly in universities,
+libraries, and other public service institutions, to build their own
+digital libraries.  Digital libraries are radically reforming how
+information is disseminated and acquired in UNESCO's partner communities
+and institutions in the fields of education, science and culture around the
+world, and particularly in developing countries.  We hope that this
+software will encourage the effective deployment of digital libraries to
+share information and place it in the public domain.  Further information
+can be found in the book <a href="http://www.nzdl.org/howto">How to build a
+digital library</a>, authored by two of the group's members.
+}
+
+_t8_ {
+Also, the collect.cfg files for many of the collections at <a
+href="http://www.nzdl.org">nzdl.org</a> have been made available <a
+href="_httpwikicolcfg_">here</a>.
+}
+
+_t9_ {
+This software is developed and distributed as an international cooperative
+effort established in August 2000 among three parties:
+}
+
+_t10_ {
+New Zealand Digital Library Project at the University of Waikato
+}
+
+_t11_ {
+Greenstone software grew out of this project, and this initiative has been
+endorsed by the Communication Sub-Commission of the New Zealand National
+Commission for UNESCO as part of New Zealand's contribution to UNESCO's
+programme.
+}
+
+_t12_ {
+United Nations Educational, Scientific and Cultural Organization
+}
+
+_t13_ {
+The dissemination of educational, scientific and cultural information
+throughout the world, and particularly its availability in developing
+countries, is central to UNESCO's goals as pursued within its
+intergovernmental Information for All Programme, and appropriate,
+accessible information and communication technology is seen as an important
+tool in this context.
+}
+
+_t14_ {
+The Human Info NGO, based in Antwerp, Belgium
+}
+
+_t15_ {
+This project works with UN agencies and other NGOs, and has established a
+worldwide reputation for digitizing documentation of interest to human
+development and making it widely available, free of charge to developing
+nations and on a cost-recovery basis to others.
+}
+
+_t16_ {
+If you <a href="_httppagex_(download)">download</a> and install Greenstone v2.70w and the documented example collections, it will look exactly like <a href="http://puka.cs.waikato.ac.nz/cgi-bin/gsdl-2.70w/library">this</a>. If you install Greenstone from the UNESCO CD-ROM, it will look similar, but only a few of the collections will be included, and just the four languages English, French, Spanish and Russian will be enabled. To activate the other languages, please see the <i>Enabling other languages</i> section of the <a href="_httpwikitutorial_/en/update_greenstone_installation.htm">Updating a Greenstone Installation</a> tutorial.
+}
+
+_t17_ {
+If you <a href="_httppagex_(download)">download</a> and install Greenstone v2.71 and the documented example collections, it will look exactly like <a href="http://puka.cs.waikato.ac.nz/cgi-bin/gsdl-2.71/library">this</a>. If you install Greenstone from the UNESCO CD-ROM, it will look similar, but only a few of the collections will be included, and just the four languages English, French, Spanish and Russian will be enabled. To activate the other languages, please see the <i>Enabling other languages</i> section of the <a href="_httpwikitutorial_/en/update_greenstone_installation.htm">Updating a Greenstone Installation</a> tutorial.
+}
+
+_t84_ {
+If you <a href="_httppagex_(download)">download</a> and install Greenstone v2.72 and the documented example collections, it will look exactly like <a href="http://puka.cs.waikato.ac.nz/cgi-bin/gsdl-2.72/library">this</a>. If you install Greenstone from the UNESCO CD-ROM, it will look similar, but only a few of the collections will be included, and just the four languages English, French, Spanish and Russian will be enabled. To activate the other languages, please see the <i>Enabling other languages</i> section of the <a href="_httpwikitutorial_/en/update_greenstone_installation.htm">Updating a Greenstone Installation</a> tutorial.
+}
+
+_greenstonewiki_ {<i>(Apr 2006)</i> There is now a <a href="_httpwiki_">Greenstone documentation Wiki</a> that brings together all Greenstone documentation, including manuals, FAQ, tutorial exercises (with sample files), example collections, teaching material, and much more. Please help us with this documentation project; <a href="_httpwiki_/Contributing_to_GreenstoneWiki">here's how</a>. }
+
+}
+
+_greenstone302release_ {<i>(Feb 2007)</i> <a href="http://sourceforge.net/projects/greenstone3">Greenstone3.02</a> released! See the <a href="http://www.greenstone.org/greenstone3.html">Greenstone3 home page</a>. Greenstone2 will continue to be supported for a long time yet (years), but ultimately we see Greenstone3 replacing it. This is a beta release: it contains (virtually) all the  features needed for Greenstone2 compatibility, and has been extensively tested. We have added a <a href="_httpwiki_/Greenstone3">new section</a> to the Wiki on Greenstone3, and in  particular a new page entitled <a href="_httpwiki_/Greenstone3_for_Greenstone2_Users">Greenstone3 for Greenstone2 users</a> about how to set it up and migrate your collections (with a list of  possible problem areas). Greenstone2 is certainly not yet in the past, but Greenstone3 is  definitely the future!}
+
+_enduserdoc_ {<i>(Feb 2007)</i> New documentation is available at the <a href="http://greenstonesupport.iimk.ac.in/Documentation.htm">documentation section</a> of the Greenstone support for South Asia website. Three new documents have been added entitled <i>Greenstone: A Beginner's Guide</i>, <i>WINISIS to Greenstone: A Guide</i> and <i>Creating Digital Archives with Winisis</i>.}
+
+_greenstonehistory_ {<i>(Jan 2007)</i> Interested in the history of the Greenstone project? <a href="_httphistory_">Here</a> is a  brief account.}
+
+_southasiasupport_ {Greenstone support for South Asia}
+
+_gsoaheading_ {Greenstone Support Organisation for Africa (GSOA)}
+
+_gsoa_ {<a href="_httpdocsdir_/GSOA Feasibility Study.pdf">Here</a> is the GSOA feasibility study undertaken with UNESCO support in 2005 and completed in February 2006. Readers may wish to refer to the <a href="_httpdocsdir_/GSOA Survey Instrument.pdf">survey questionnaire</a> which was circulated widely to African professionals to prepare this study. Comments or questions may be addressed to <a href="mailto:rosejohnzz@hotmail.com">John Rose</a> who coordinated this study for Greenstone and is exploring options for follow-up.}
+
+
+
+#######################################################################
+package docs
+
+_t80_ {Greenstone Documentation}
+
+#######################################################################
+
+package download
+
+_t18_ {Download Greenstone}
+
+_t19_ {
+Greenstone is open-source software, distributed under the terms of the <a
+href="http://www.gnu.org/copyleft/gpl.html">GNU General Public
+License</a>. It runs on Windows and Unix, and both source code and binaries
+are available for download. It is fully documented in English, French,
+Spanish and Russian.
+}
+
+_t20_ {
+Select the Greenstone distribution you require from the list below. Each
+distribution provides a complete interface in English, French, Spanish and
+Russian, and incomplete interfaces in many other languages.
+}
+
+_t21_ {
+Each distribution also includes the "Greenstone Librarian
+Interface", a graphical tool for building digital libraries. It gives
+you access to Greenstone's functionality from an easy-to-use 'point and
+click' interface. To use this tool you will need a suitable Java Run-time
+Environment, which you can download via <a
+href="http://java.sun.com/j2se/">here</a> -- the latest version is currently 1.5 (then choose the JRE, not the SDK).
+}
+
+_t22_ {Windows distribution}
+
+_t23_ {
+This is the distribution you want if you're going to run Greenstone under
+any 32 bit Windows environment (that is, Windows 95/98/Me/NT/2000/XP etc.).
+}
+
+_t24_ {
+Greenstone can no longer be installed on 16 bit Windows (that is, Windows 3.1/3.11). However collections that have been exported to CD will still run on these systems (Greenstone 2.70w and earlier).
+}
+
+_t25_ {
+Using this distribution you may either install the "local
+library", the "web library", or install and compile the
+source code (click <a href="_httpwikilocallibrary_">here</a> for a
+description of the differences between the "local library" and
+the "web library"). You will be asked which form of Greenstone
+you want during the installation process.
+}
+
+_t26_ {
+This distribution includes everything you need to run Greenstone (including
+a pre-built demonstration collection) and to build new Greenstone
+collections. Some functionality is not included however, mostly in an
+attempt to keep the distribution as small as possible. See <a
+href="#packages">below</a> for details on how to get this missing
+functionality.
+}
+
+_t27_ {
+This distribution uses a standard Windows installer program, simply
+download the file and double-click it to install (see the <a
+href="_httpguide_(Install,en)">Installer's Guide</a> for more detailed
+installation instructions).
+}
+
+_t28_ {Unix distribution}
+
+_t29_ {
+This is the recommended distribution if you're installing Greenstone on any
+form of Unix.
+}
+
+_t30_ {
+This distribution comes with statically linked linux binaries. However, it
+also contains the Greenstone source code for compiling on other forms of
+Unix (or on linux if you prefer not to use the provided binaries).
+}
+
+_t31_ {
+This distribution includes everything you need to run Greenstone (including
+a pre-built demonstration collection) and to build new Greenstone
+collections. Some functionality is not included however, mostly in an
+attempt to keep the distribution as small as possible. See <a
+href="#packages">below</a> for details on how to get this missing
+functionality.
+}
+
+_t32_ {
+To install this distribution, extract the gzipped tar archive and run the <i>setupLinux.bin</i> Java-based Installer program. Alternatively, run the 
+<i>Install.sh</i> shell script from within the <i>gsdl-X.XX-unix/Unix</i>
+directory (see the <a href="_httpguide_(Install,en)">Installer's Guide</a> for
+more detailed installation instructions).
+}
+
+_t33_ {Mac OS X distribution}
+
+_t34_ {
+This distribution contains dynamically linked binaries for Mac OS X running
+on PowerPC platforms.
+}
+
+_t35_ {
+This distribution has been tested on Mac OS X 10.4.7.  It
+includes the pre-built binaries and also includes the demonstration
+collection, pre-built. This distribution also includes the Greenstone
+Librarian Interface for building collections.
+}
+
+_tmacinstall_ {
+To install this distribution, extract the gzipped tar archive and run the <i>setupMacOSx.command</i> Java-based Installer program.
+}
+_t36_ {Source only distribution}
+
+_t37_ {
+This distribution contains the Greenstone source code along with the same
+demonstration collection as the distributions above (although the
+collection is not pre-built in this distribution).
+}
+
+_t38_ {
+This distribution does not have an automated installation procedure
+(running <i>Install.sh</i> will not work). Unless you're sure you know what
+you're doing you probably want one of the distributions above, both of
+which also contain the Greenstone source. Note that you can obtain an
+up-to-date version of the Greenstone source code at any time by using <a
+href="_httpwiki_/Greenstone_CVS">cvs</a>.
+}
+
+_t81_{GLI Client distribution}
+
+_t82_{A new package containing the GLI client. This is a stand-alone GLI 
+program that enables you to build collections on a remote server, 
+without having Greenstone installed locally.}
+
+
+_t39_ {
+The following extra packages may be downloaded and installed along with an
+existing Greenstone installation to add functionality that was left out of
+the distributions above.
+}
+
+_classicpack_ {Greenstone Classic Interface Pack}
+_classicpackdesc_ {Greenstone 2.63 and later: Greenstone now comes with all languages enabled. New HTML and CSS stylesheets have removed the need for images with text on them, reducing the size of each language interface. This "classic interface" pack contains all the old text images (for all languages), and is designed to be used with a backwards compatibility macro file. You will only need to download this pack if you want to use the old-style tables + text images layout, or if you need support for Netscape 4, which doesn't support the new CSS. To use the images, edit greenstone\\etc\\main.cfg, and replace nav_css.dm with nav_ns4.dm in the macrofiles list. Note that this does not affect the multilingual support for the Greenstone Librarian Interface.}
+
+_langpack_ {Greenstone Language Pack}
+
+_langpackdesc_ {
+Greenstone 2.62 and earlier: These versions of Greenstone come with only English, French, Spanish and Russian reader's interfaces. This package contains the interface to Greenstone in various different language versions; see <a href="_httpwikiintn_">here</a> for details. Note that this does not affect the multilingual support for the Greenstone Librarian Interface.
+}
+
+_t40_ {Export to CD-ROM package}
+
+_t41_ {
+Greenstone 2.70: This package enables the "export to CD-ROM" function from within the Greenstone Librarian Interface and the Collector. This has been included in all binary releases since 2.70w. To get this functionality for Greenstone versions prior to 2.70, please contact the <a
+href="mailto:greenstone-users@list.scms.waikato.ac.nz">mailing list</a>.
+}
+
+_t42_ {
+To install, simply download the file (it will work on both Windows and Unix) and extract the zip archive into the greenstone\\bin\\windows directory of your existing Greenstone installation.
+}
+
+_t43_ {
+The following utilities have been developed to be used along with
+Greenstone.
+}
+
+
+_dllearningteachingmaterial_ {The following packages should help you learn more about Greenstone, and teach it to others.}
+
+_tutorialexercises_ {Tutorial exercises}
+_tutorialsamplefiles_ {Sample files}
+_tutorialexercisesmultimediafiles_ {Multimedia files}
+
+_dltutorialexercisesdesc_ {Tutorial exercises to teach you about many aspects of Greenstone, see <a href="_httpwikitutorial_">here</a> for details.}
+
+_teachingmaterial_ {Teaching material}
+_1day_ {(1 day)}
+_3day_ {(3 day)}
+_4day_ {(4 day)}
+
+_dlteachingmaterialdesc_ {Packages of material prepared for various Greenstone workshops; see <a href="_httpwikiworkshops">here</a> for details.}
+
+_documentedexamplecollections_ {Documented Example Collections}
+_dldocumentedexamplecollectionsdesc_ {Greenstone collections whose "about" page describes how they are constructed; see <a href="_httpwikidec_">here</a> for details.}
+
+_t44_ {The Organizer}
+
+_t45_ {
+The Organizer is a Windows application useful for managing metadata and automatically generating the configuration files (metadata.xml, sub.txt etc.) needed to build a new Greenstone collection. It has now been replaced by the Greenstone Librarian Interface (GLI), and in any case is only appropriate for collections in a format very similar to the Development Library format (the format of the Greenstone demo collection).
+}
+
+_t46_ {
+To install, simply download and double-click the self-extracting executable
+file.
+}
+
+
+#######################################################################
+
+package examples
+
+_t47_ {Examples of Greenstone in Action}
+
+_t48_ {New Zealand Digital Library Project}
+_t49_ {
+A demonstration site set up by the developers of Greenstone, the New
+Zealand Digital Library Project. This site contains many collections,
+ranging from humanitarian information to computer science technical reports
+to demonstration collections of Chinese and Arabic documents.
+}
+
+_t50_ {Russian Greenstone Library}
+
+_t51_ {
+A Greenstone site containing several collections in the Russian
+language. This site was set up by a regional government department in the
+Mari El Republic of the Russian Federation.
+}
+
+_t52_ {Project Gutenberg}
+
+_t53_ {
+An on-going project to produce and distribute free electronic editions of
+literature, Project Gutenberg now contains more than 3,700 titles from
+Shakespeare to Dickens to the Bronte sisters. This site, maintained by
+Ibiblio, one of the original Gutenberg mirror sites, uses Greenstone to
+make the entire Gutenberg collection available in a fully searchable form.
+}
+
+_t54_ {University of Applied Sciences, Stuttgart}
+
+_t55_ {Hochschule der Medien - an "Information and Media" digital
+library created by the University of Applied Sciences, Stuttgart, Germany.
+One collection is "Digitale Biblioteken" (Digital Libraries), an open
+access collection of documents on the area of digital libraries.
+}
+
+_t56_ {Gresham College Archive}
+
+_t57_ {
+A digital library created at Gresham College, London, England.
+}
+
+_t60_ {Peking University Digital Library}
+
+_t61_ {
+Two experimental collections created at Peking University.
+}
+
+_t62_ {Music Information Retrieval Research}
+
+_t63_ {
+Virtual home of music information retrieval research.
+}
+
+_t64_ {Photograph Album}
+
+_t65_ {
+A collection of photographs taken by <a
+href="mailto:gordon.paynter@ucr.edu">Gordon Paynter</a>.
+}
+
+_t66_ {Washington Research Library Consortium Special Collections}
+
+_t67_ {
+Digital material from the special collections of the eight universities of
+WRLC in Washington, D.C., USA.
+}
+
+_t68_ {Archives of Indian Labour}
+
+_t69_ {
+A collaborative project between the V.V. Giri National Labour Institute and
+the Association of Indian Labour Historians. The Archives of Indian Labour
+are dedicated to preserving and making accessible the fast depleting
+documents on the Indian working class.
+}
+
+_t70_ {NCSI Demonstration Collections}
+
+_t71_ {
+Demonstration collections created by students and staff at the National
+Centre for Science Information, Indian Institute of Science, Bangalore,
+India. Many of these collections include content in Kannada and Hindi.
+}
+
+_t72_ {New York Botanical Garden}
+
+_t73_ {
+The rare book digitization project of the LuEsther T. Mertz Library of the
+New York Botanical Garden.
+}
+
+_t74_ {Lehigh University Digital Bridges Collection}
+
+_t75_ {
+A collection containing thirty books about bridges, all of which were
+published between 1811 and 1899. The collection was created at Lehigh
+University, Pennsylvania and features a heavily customized user interface.
+}
+
+_t76_ {Chopin Early Editions}
+
+_t77_ {
+A collection of digital images of early printed editions of musical
+compositions by Fr&eacute;d&eacute;ric Chopin. This collection was created
+by the University of Chicago Library and, once completed, will include its
+entire collection of over 400 Chopin early editions. The greenstone
+collection configuration file for this collection has also been made
+available and can be downloaded <a
+href="http://chopin.lib.uchicago.edu/gsdl/collect/chopin/etc/collect.cfg">here</a>.
+}
+
+_t78_ {Slavonski Brod Public Library}
+
+_t79_ {
+The pilot project of digitization of local studies collection in Slavonski
+Brod Public Library, Croatia.
+}
+
+_ex1t_ {Mirabilia Vicomercati}
+
+_ex1d_ {
+Mirabilia Vicomercati is an on-going project managed by Vimercate Public Library (Milan, Italy), aimed at the digitization of local history primary sources. Several collections will be provided - photographs, postcards, maps, text, reference, multimedia - in order to make accessible, promote and preserve the historical memory of Vimercate and its territory.
+}
+
+_ex2t_ {Illinois Wesleyan University Argus Digital Collection}
+
+_ex2d_ {
+Illinois Wesleyan University's newspaper The Argus has been published under student supervision continuously since 1894. This digital collection is part of an on-going project to preserve and provide access to Argus volumes published from 1894-2000.
+}
+
+_ex3t_ {Human Rights in Argentina}
+
+_ex3d_ {
+This site contains documents, photos and books covering files of children kidnapped during the 1976-1983 dictatorship, leglislation on identity, jurisprudence-related information, and many other items. It was created by the Secretary of Human Rights of Argentina under the Comisi&oacute;n Nacional por el Derecho a la Identidad (CONADI), which is a National Commission that fights for the right that a person has for knowing his or her identity -- particularly when their parents have disappeared.
+}
+
+_ex4t_ {Auburn University Libraries Digital Library}
+
+_ex4d_ {
+This site contains several Greenstone collections. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=postcard">Alabama Postcards</a> has over 300 postcards depicting buildings, natural settings, events and other scenes in various Alabama cities and towns in the early 20th century. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=alauths">Alabama Authors</a> gives information about 20th Century Alabama Authors which is maintained and updated by the Alabama Library Association. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=loguesms">The Loveliest Village Photo Collection</a> contains selected images and captions from Mickey Logue and Jack Simms, Auburn: A Pictorial History of The Loveliest Village, 2nd edition that illustrate the history of the city and campus. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=sheetmus">The Piano Bench Collection</a> is a collection of sheet music (primarily of American popular songs and piano music) published before 1923.
+}
+
+_ex5t_ {State Library of Tasmania Sheet Music Collection}
+
+_ex5d_ {
+This site makes available about two hundred items from the rich holdings of printed music in the State Library of Tasmania's Heritage Collections. They range from the 1840s to the 1930s and include pieces for piano and other instruments, brass band arrangements and songs of all sorts - popular, sacred, patriotic, and even songs written to encourage tourists to come to Tasmania.
+}
+
+_ex6t_ {Indian Institute of Science Publications Database}
+
+_ex6d_ {
+Indian Institute of Science, Bangalore - 560012, Karnataka, India is a premier institution of advanced research and teaching, with more than 2000 active researchers working in almost all frontier areas of science and technology. Started in 1909 by J.N.Tata, the Institute publishes about 2,000 publications including journal articles, conference publications, patents, reports, books, book chapters every year, according to this study. An effort is made here to compile these publications from several identified sources, remove duplicate records, standardise the metadata details. The database is web enabled using Greenstone.
+}
+
+_ex7t_ {Books from the Past / Llyfrau o'r Gorffennol}
+
+_ex7d_ {
+Books from the Past is an on-line collection of Welsh books of national cultural interest which have long been out of print, and are unlikely to be reprinted by traditional means. The texts are available in two forms - images of the original book pages, together with a fully searchable electronic text which is also suitable for printing. Developed by Culturenet Cymru and the Welsh Books Council, Books from the Past is a resource freely accessible to all. The web site will be developed and expanded over the coming years to include many more books in both English and Welsh languages. 
+}
+
+_ex8t_ {Philippine Research, Education and Government Information Network}
+
+_ex8d_ {
+PREGINET is a nationwide broadband network that links academic, research, and government institutions in the Philippines. The Advanced Science and Technology Institute (ASTI) has created a Digital Library platform for use by PREGINET partner institutions. They have built collections of the Philippine Journal on ICT and Microelectronics (PJICTM), PREGINET newsletters, and the ASTI Video collection.
+}
+
+_ex9t_ {Ulukau, the Hawaiian Electronic Library}
+
+# This: "ÃÂ" is needed to prevent Emacs from getting confused by the following Unicode
+_ex9d_ {
+Ulukau makes available resources for the use, teaching, and enhancement of the Hawaiian language. It has five collections: "Ka HoÃÂ»oilina: Puke Pai ÃÂ»Ã
+Âlelo HawaiÃÂ»i" (The Legacy: Journal of Hawaiian Language Resources), Hawaiian Newspapers, Baibala Hemolele (The Hawaiian Bible), Hawaiian Dictionaries, and Hawaiian Books.
+}
+
+_ex10t_ {Detroit Public Library: E. Azalia Hackley Collection}
+
+_ex10d_ {
+This collection of sheet music consists of over 500 pieces of 19th and 20th century sheet music published between 1799 and 1922. Song themes cover early 19th century plantation life in the American South, the Civil War period, including abolitionism, emancipation and Reconstruction, early 20th century popular music, and the stereotypical themes associated with black face minstrels.
+}
+
+_ex11t_ {Indian Institute of Management, Kozhikode}
+
+_ex11d_ {
+The Indian Institute of Management Kozhikode (<a href="http://www.iimk.ac.in">http://www.iimk.ac.in</a>) is a premier management school set up by the Government of India during 1996. The Center for Development of Digital Libraries of IIMK uses GSDL software for its DL collection development. The DL at IIMK is truly a multi-media, multi-publication type and multi-format library with books, monographs, reports, journals, cases and educational videos forming part of its growing collection. The videos collection is a recent addition which used only open source software and open standards for its entire workflow.
+}
+
+_ex12t_ {Natural Sciences Digital Library, Vietnam National University, Ho Chi Minh City (in Vietnamese)}
+
+_ex12d_ {
+This site contains two Greenstone collections. "Library and Information Science" consists of the articles on Information and Library sciences from the Library Club, FESAL, and the Natural Sciences Library Newsletters since 1998. "Library Equipment" has photos of library equipment in some libraries from the USA, Singapore, Thailand and Vietnam. This site is maintained by the Natural Sciences Library, VNU-HCM.
+}
+
+_ex13t_ {SRM Documentation Centre}
+
+_ex13d_ {
+Demo version of a CD-ROM with references to literature on social
+research methodology. The approximately 1,500 references (53,000 on the
+CD-ROM) are distributed over two subcollections: 1958-1990 and
+1991-2004. The SRM Documentation Centre is part of the Netherlands
+Institute for Scientific Information Services (NIWI).
+}
+
+_ex14t_ {Kyrgyz Republic National Library}
+
+_ex14d_ {
+Kyrgyz Epic Poem Manas, a rare book from the National Library of Kyrgyzstan; and a collection of dissertations and abstracts from Kyrgyz scientists on subjects such as agriculture, medicine, mining industry, history and culture of the Kyrgyz Republic.
+}
+
+_ex15t_ {Red de Bibliotecas Virtuales de Ciencias Sociales de AmÃÂ©rica Latina y el Caribe - CLACSO (Latin America and the Caribbean Network of Social Science Virtual Libraries)}
+
+
+_ex15d_ {Open access to full-text social science books, periodical articles and
+conference papers published 
+(in Spanish and Portuguese) by CLACSO's network of 168 research
+institutions in 21 countries of Latin America and the Caribbean.
+Search facility within the complete 70 collections with 4.000 texts,  or
+within each individual institutional collection.  
+}
+
+_ex16t_ {The Cushing/Whitney Medical Digital Library}
+
+_ex16d_ {The Cushing/Whitney Medical Digital Library is a growing collection of digital resources made available on the Web for scholarship. The Medical Digital Library Committee coordinates the library's digitization activities. Its goals include expanding access to the library's unique collections for scholarly research, and life-cycle management of digital objects.  The first collection consists of 83 mid-19th century oil paintings rendered by Western-trained artist Lam Qua of Chinese patients with tumors under the care of Yale-trained medical missionary Peter Parker.}
+
+_ex17t_ {The Arafura Digital Archive}
+
+_ex17d_ {The East Timor Collection is a part of the Arafura Digital Archive (AraDA) project based at Charles Darwin University.}
+
+_ex18t_ {Rwanda HIV/SIDA}
+
+_ex18d_ {This collection contain documents related to the state of HIV/AIDS in Rwanda. It includes national and international publications, manuals, guides, presentations and reports. This library was built by TRAC and Payson Center.}
+
+_ex19t_ {University of Namibia}
+
+_ex19d_ {This library includes a collection of past examination papers of the University of Namibia, a register of Namibian theses and dissertations, and a collection containing publications of University of Namibia staff members between 1992 and 2002.}
+
+_ex20t_ {Decifrazione del V. e VI. libro de' partimenti di Fenaroli del Cav\[alliere\] N\[iccolÃÂ²\] C\[alichiopulo\] Manzaro}
+
+_ex20d_ {A music manuscript created around 1850 by the famous Greek composer Nikolaos Halikiopoulos Mantzaros. One version was dedicated to Victoria I, Queen of the United Kingdom of Great Britain and Ireland, possibly in 1856, and belongs to the Manuscript Collection of British Library (London). The collection contains the "partimenti" that can be found in Books V. and VI. in F. Fenaroli's "Partimenti ossia basso numerato". The manuscript is one of the most important samples of Greek music heritage.}
+
+_ex21t_ {iArchives}
+
+_ex21d_ {Several demo collections of digitized newspapers that have been set up by iArchives for clients, including British Library Newspapers, the Californian, the Dublin Evening Telegraph, and the Tundra Times.}
+
+_ex22t_ {Our homes are bleeding / Nos foyers saignent - Union of BC Indian Chiefs}
+
+_ex22d_ {This digital collection draws together several types of primary materials concerned with aboriginal land rights in British Columbia, Canada.  The testimonies database contains the hearings of the McKenna McBride Royal Commission (1913-1916). Additional historical records, including maps, documents, newspaper articles, photographs, audio and video clips showing the continual assertion of aboriginal title and rights are available here.  The testimonies database will continue to be developed over the coming years to incorporate more audio, video, cartographic and photographic material.}
+
+_ex23t_ {The Writing University Archive}
+
+_ex23d_ {The Writing University Archive is a repository for digital humanities collections at the University of Iowa. The archive contains collections from the International Writing Program and the Iowa Writers' Workshop. The Writing University Archive is a collaboration between the writing programs and the School of Library and Information Science at The University of Iowa. You will be able to search the multimedia recordings that have been digitized and read the detailed catalog entries annotating their content. You will also be able to listen to recordings and view video if you have the appropriate players.}
+
+_ex24t_ {MOST Digital Library (UNESCO)}
+
+_ex24d_ {The MOST Digital Library contains results from research carried out during the first ten years of the MOST Programme. The themes covered include Drugs, Globalization and Governance, International Migration, Multicultural Societies, Poverty Eradication, Social transformations, Sustainability, Urban Development and HIV/AIDS. The MOST digital library offers a brief abstract of each document (in English, French and Spanish) that identifies the key issues and arguments in a few lines. The database contains the documents in their original language (English, French or Spanish) and in translation if such a version exists. The user interface is currently in English only, but will shortly also be available in French and Spanish.}
+
+_ex25t_ {Sudanese Association of Libraries and Information (SALI) Digital Library}
+
+_ex25d_ {This library includes the following six collections:
+
+
+<ul><li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=dalsal&ct=0&l=ar&w=windows-1256">Sudanese Libraries Directory Part 1: Khartoum Libraries Directory</a>
+<li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=salcon&ct=0&l=ar&w=windows-1256">SALI first Conference proceedings</a>
+<li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=slal&ct=0&l=ar&w=windows-1256">Sudanese Library and Information Sciences literature (Arabic)</a>
+<li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=slel&ct=0&l=en&w=utf-8">Sudanese Library and Information Sciences literature (English)</a>
+<li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=salnew&ct=0&l=ar&w=windows-1256">SALI Newsletter (Arabic)</a>
+<li><a href="http://puka.cs.waikato.ac.nz/cgi-bin/sali/library?a=p&p=about&c=salpho&ct=0&l=ar&w=windows-1256">SALI activities images (Arabic)</a>
+</ul>}
+
+_ex26t_ {The Black Abolitionist Archive}
+
+_ex26d_ {The Black Abolitionist Archive is a collection of documents created by
+antebellum blacks. In contrast to the popular belief that the abolitionist
+crusade was driven by wealthy whites, these important documents provide a
+portrait of black involvement in the anti-slavery movement. The collection
+was donated to the University of Detroit Mercy by Dr. C. Peter Ripley in
+1998. The paper collection is maintained by Dr. Roy E. Finkenbine who
+teaches in the UDM History Department. The digital archive is being
+developed and maintained by the UDM Libraries / IDS.}
+
+_ex27t_ {Great Lakes Shipping Database}
+_ex27d_ {Fr. Edward J. Dowling, S. J. Marine Historical
+Collection at University of Detroit Mercy. Documents, publications, photographs, and negatives collected by a Jesuit
+professor over a seventy year period dealing with all aspects of Great Lakes
+Shipping from 1850 to the present day. }
+
+_ex28t_ {The United Nations Digital Library - Islamabad}
+
+_ex28d_ {The United Nations Digital Library Islamabad, is an Open-Access, online searchable repository containing Full-text of documents, reports, publications and other public information items produced by the country offices of United Nations Organizations, Programmes and Funds in Pakistan. The Digital Library of United Nations in Pakistan strives to stop the loss of digital information of the UN in Pakistan and facilitates the retention and long-term preservation, in a usable form. The collection comprises the general documents, reports, publications, newsletters, press releases and other public information items. This repository is a centralized information resource of the United Nations information on or about Pakistan.}
+
+_ex29t_ {Sudan Open Archive}
+
+_ex29d_ {The Sudan Open Archive provides free digital access to contemporary and historical knowledge about Sudan. The initial version of the Archive consists primarily of technical reports and unpublished grey literature from the history of aid in Sudan, covering the period from the start of Operation Lifeline Sudan (OLS) in 1989 to the present day. }
+
+_ex30t_ {Greater Cincinnati Memory Project}
+
+_ex30d_ {A collection of 6,000 pre-1940 photos, postcards and slides relating to landmarks and events related to the city of Cincinnati, Ohio. Collection created by the <a href="http://www.gclc-lib.org/">Greater Cincinnati Library Consortium</a>.}
+
+_ex31t_ {Allen Park Veterans Administration Hospital Archives}
+
+_ex31d_ {This collection contains a sampling of items from the 
+Allen Park VA Hospital
+archives including: photographs of events, newspaper articles, and audio
+memoirs. The hospital also intends to add a few video clips. The Allen Park
+VA Hospital, Dearborn, Michigan, USA, was deemed eligible for the National
+Register of Historic Places on Jan. 6, 1981 but was demolished in 2004. }
+
+_ex32t_ {Pacific Archive of Digital Data for Learning and Education - PADDLE}
+_ex32d_ {PADDLE provides full text access to a comprehensive collection of Pacific education material. This includes publications from the participating Ministries of Education including strategic plans, education legislation, curriculum frameworks and school policies. It also contains national development plans, statistics and budget information for the fifteen Pacific countries.  PADDLE also includes material from international and regional organisations including UNESCO, the Commonwealth Secretariat, the Commonwealth of Learning, Pacific Resources for Education and Learning (PREL), and the Pacific Islands Forum Secretariat. In recognition of the low bandwidth in the Pacific PADDLE is also available on CD.}
+
+_ex33t_ {Alive in Truth}
+_ex33d_ {Alive In Truth records life histories of people from New Orleans, Louisiana and nearby areas who were affected by hurricane Katrina. Our mission is to document individual lives, restore community bonds, and to uphold the voices, culture, rights, and history of New Orleanians.}
+
+_ex34t_ {Kazakhstan Human Rights Commission}
+_ex34d_ {The digital library of the Commission on Human Rights under the  President of the Republic of Kazakhstan allows for free access to a  wide collection of human rights related documents. It provides common  citizens with the opportunity to find free legal information on those  human rights questions they are interested in.}
+
+_ex35t_ {The Council of Independent Colleges Historic Campus Architecture Project}
+_ex35d_ {This project presents information about significant buildings, landscapes, campus plans, and heritage sites of American higher education and identifies sources for further research. Supported by grants from the Getty Foundation, the CIC HCAP website documents nearly 2,000 places of historical significance on private college and university campuses and includes more than 4,300 images relating to these sites. To date, nearly 370 institutions have participated. On this site, web users can find institutions or places in a particular state or region; seek information about a specific type of architecture, designer, or time period; or gather data for future research.}
+
+_ex36t_ {Marshall Foundation Digital Library}
+_ex36d_ {The Marshall Papers project has published five volumes since 1977 from the voluminous manuscript collection of George C. Marshall's papers held at the Marshall Foundation's Archive in Lexington, Virginia. The published volumes span the years 1900 to 1946 and comprise some 3,000 pages; these letters, telegrams, memos, reports, and speeches include exchanges with a virtual Who's Who in war and diplomacy for the period covered: Roosevelt, Churchill, Eisenhower, Omar Bradley, Chiang Kai-shek, Joseph Stilwell, Cordell Hull, William Leahy, Mark Clark, Henry L. Stimson, and many others. Two additional volumes will be published covering the period 1947 to 1959, that is, his term as secretary of state and then, during the Korean War, as secretary of defense.}
+
+
+_ex37t_ {Biblioteca Digital CientÃ­fica de les Illes Balears}
+_ex37d_ {
+<p>La Biblioteca Digital CientÃ­fica de les Illes Balears Ã©s un portal d'accÃ©s a la informaciÃ³ cientÃ­fica i erudita produÃ¯da en aquestes illes.</p>
+<p>Inicialment contÃ© 11 colÂ·leccions amb un total de 2.283 documents entre manuscrits, llibres, articles de publicacions periÃ²diques, fotografies i plÃ nols, que s'aniran incrementant de forma continuada.</p>
+<p>Per poder presentar la versiÃ³ electrÃ²nica d'aquests documents s'han digitalitzat i restaurat 20.500 pÃ gines, de les quals prop de 15.000 corresponen a articles i publicacions cientÃ­fics moderns produÃ¯ts a la Universitat de les Illes Balears o en institucions culturals de reconegut prestigi, unes 3.000 provenen de manuscrits d'entre els segles XVI i XVIII, 133 sÃ³n plÃ nols de gran format del segle XIX, i mÃ©s de 2.400 corresponen a nÃºmeros de revista d'entre 1916 i 1931.</p>
+<p>La Biblioteca Digital serÃ  consultable a travÃ©s d'internet amb una interfÃ­cie de consulta molt senzilla i intuÃ¯tiva, disponible en 40 idiomes. Amb l'ordinador el lector pot visitar la biblioteca digital amb la mateixa facilitat que visita una biblioteca real, recorrent-ne les colÂ·leccions i els prestatges virtuals. Per altra banda, gaudirÃ  d'avanÃ§ades tÃšcniques de consulta, que li permetran entre altres coses cercar dins el text complet de tots els documents de la biblioteca a la vegada.</p>
+<p>Aquesta Biblioteca Digital tÃ© les caracterÃ­stiques que la fan Ãºnica a l'Estat espanyol, tant per les avanÃ§ades tÃšcniques de digitalitzaciÃ³ aplicades com per l'alta tecnologia que s'ha fet servir per a la seva creaciÃ³ i perquÃš compleix amb els estÃ ndars internacionals per a la creaciÃ³ de biblioteques digitals.</p>
+}
+
+_ex38t_ {Oxford Digital Library}
+_ex38d_ {A dozen or so collections on an eclectic variety of subjects: ornithology and entomology, prints and maps, educational games from the 18th and 19th century; classic geological literature, medieval science, and many others.}
+
+_t85_ {Afghanistan Research and Evaluation Unit - AREU}
+_t86_ {This on-line bibliographic catalogue lists materials held in hardcopy in AREU?s research library in Kabul, Afghanistan. AREU?s collection includes books, pamphlets, government publications, periodicals, maps, CDs, DVDs, etc. in English, Dari, Pashto and other languages. When we know these materials are available for download on the internet we provide a URL link in the bibliographic record. Some important materials not available elsewhere are made available here for download. This collection contains 5735 documents. It was last built 12 days ago. If you see any entries that need correcting or find that URLs no longer work please email:library@areu.org.af.}
+
+_t87_ {Afghanistan Research and Evaluation Unit - ACKU}
+_t88_ {This collection contains 14230 documents.}
+
+
+package gsoc2007
+
+_t1001_ {Google Summer of Code 2007}
+
+_t1002_ {
+Project Ideas:<br/>
+<br/>
+<h4>1. Integration with Fedora</h4>
+<p>Investigate the integration of the Fedora digital object
+repository system with Greenstone 3. Greenstone can already
+import content via several protocols (e.g. z39.50, OAI),  this
+project would examine whether that content can be sourced from a
+Fedora repository.</p>
+
+<h4>2. Greenstone 3 as an OAI Server</h4>
+<p>Greenstone 2 works with OAI but the new Java/Tomcat framework
+for Greenstone 3 means we need to update this solution to
+provide OAI services.</p>
+
+<h4>3. Access Control in Greenstone 3</h4>
+<p>Implement a user access control mechanism in Greenstone 3, possibly
+via using a standard such as XACML.</p>
+
+<h4>(4. Something from Annika)</h4>
+}
+
+
+#######################################################################
+package support
+
+_t109_ {Greenstone Support}
+
+_tsupportintro_ {
+Want to learn a bit more about Greenstone? Having trouble installing or building collections? There are many sources of help for you to turn to.
+}
+
+_twikih_{Greenstone Documentation Wiki}
+_twikib_ {
+Your one-stop shop for all documentation about Greenstone (including the following).
+}
+_tfaqh_ {Frequently Asked Questions (FAQ) List}
+_tfaqb_ {The FAQ contains a list of common questions to do with Greenstone,
+including how to get the software, installation and running of Greenstone, 
+and collection building.}
+
+_tarchh_ {Greenstone Mailing List Archives}
+_tarchb_ {There is a <a href="http://www.nzdl.org/gsarchives">Greenstone collection</a> containing all the questions and responses posted to the two Greenstone mailing lists. Searching this collection is a good way to find answers to common questions that haven't made it into the FAQ list yet. It is updated regularly but may not contain the latest postings. This is accessible by anyone. 
+<p/>
+Alternatively, there are private archives of the individual lists (<a href="https://list.scms.waikato.ac.nz/mailman/private/greenstone-users/">greenstone-users archives</a> and <a href="https://list.scms.waikato.ac.nz/mailman/private/greenstone-devel/">greenstone-devel archives</a>), which are only accessible by list members. These are updated daily.
+}
+
+_tmanualh_ {Greenstone Documentation}
+_tmanualb_ {There are several manuals and guides that come with Greenstone. 
+This page provides links to them all, many of them in multiple languages.}
+
+_tdlbookh_ {How to build a digital library}
+_tdlbookb_ {What is a digital library? What does it look like? Where does the information come from? How do you put it together? Where to start? This is a book that answers these questions in a plain and straightforward manner, with a strong practical "how to" flavour. The book also describes the Greenstone software.}
+
+_tmaillisth_ {Greenstone Mailing Lists}
+
+
+_t104_ {
+There are two mailing lists intended primarily for discussions about the
+Greenstone digital library software. Active users of Greenstone should
+consider joining one or both of these lists and contributing to the
+discussions. <b>Please consult the other information sources</b>, particularly the mailing list archives, <b>before posting a question to either list</b>.
+<p/><strong>Note:</strong>
+You need to subscribe to these lists before you may post to them.
+}
+
+_t105_ {Greenstone User's List}
+
+_t106_ {
+This list is for general Greenstone discussions. To send a message to this
+list, address it to <a
+href="mailto:greenstone-users@list.scms.waikato.ac.nz">greenstone-users@list.scms.waikato.ac.nz</a>. 
+}
+
+_t107_ {Greenstone Developer's List}
+
+_t108_ {
+This list is for more technical discussions by people developing or
+modifying Greenstone. To send a message to this list, address it to <a
+href="mailto:greenstone-devel@list.scms.waikato.ac.nz">greenstone-devel@list.scms.waikato.ac.nz</a>. 
+}
+
+_tsuppformh_ {Web-based Support Form}
+_tsuppformb_ {<b>As a last resort</b>, if you are unable to use the mailing lists for some reason, use this web based support form to send a query to the Greenstone support team.}
+
+_ttrainingcourseh_ {Greenstone Training}
+
+_ttrainingcourse_ {
+A variety of organizations have run Greenstone training courses in the past, not all of which we have been involved in:
+<ul>
+<li>UNESCO has sponsored training courses in
+   <ul>
+       <li>Bangalore (2002 and 2003), Almaty (2003), Suva (2003, with USP), Senegal (2004)</li></ul>
+       Contact Jean-Claude Dauphin <a href="mailto:jc.dauphin@unesco.org">jc.dauphin@unesco.org</a>.
+</li>
+<li>UNESCO IITE (Institute of Information Technology in Education) are planning courses in
+<ul><li>Cairo, Bangkok, Moscow</li></ul>
+       Contact Azat Khannanov <a href="mailto:Azat.Khannanov@iite.ru">Azat.Khannanov@iite.ru</a>.
+</li>
+<li>Various other organizations run courses, including
+<ul>
+       <li>University of Pune, India by Shubhada Nagarkar <a href="mailto:shubha@bioinfo.ernet.in">shubha@bioinfo.ernet.in</a>.</li>
+       <li>IIM Kozhikode by M.G. Sreekumar <a href="mailto:mgsree@iimk.ac.in">mgsree@iimk.ac.in</a>.</li>
+       <li>Pakistan Library Automation Group <a href="http://www.paklag.org/training.html">http://www.paklag.org/training.html</a>.</li>
+       <li>Infomed Cuba by Gustavo Kouri <a href="mailto:gkouric@infomed.sld.cu">gkouric@infomed.sld.cu</a>.</li>
+       <li>SLAIS, University of British Columbia by Edie Rasmussen <a href="mailto:edie@interchange.ubc.ca">edie@interchange.ubc.ca</a>.</li>
+       <li>FAO and SPC Fiji by Christina Tuitubou <a href="mailto:ChristinaT@spc.int">ChristinaT@spc.int</a>.</li>
+</ul>
+</li>
+<li>Digital Library conferences sometimes have Greenstone tutorials
+       <ul><li>JCDL, ECDL, ICADL, ICDL</li></ul>
+</li>
+<li>Librarian conferences sometimes have Greenstone workshops and presentations
+       <ul><li>LITA, ALA Annual Conference, ASIST</li></ul>
+</li>
+<li>Self-study courses
+       <ul><li>FAO/UNESCO have developed a self-paced module entitled "Digitization and Digital Libraries" available at: <a href="http://www.imarkgroup.org/">http://www.imarkgroup.org/</a>  or contact: <a href="mailto:IMARKenquiries@fao.org">IMARKenquiries@fao.org</a>.</li>
+       <li>IITE have a self-study course "Digital libraries in education";
+           contact Azat Khannanov <a href="mailto:Azat.Khannanov@iite.ru">Azat.Khannanov@iite.ru</a>.</li></ul>
+</li>
+</ul>
+We do not know what upcoming courses these organizations are scheduling: please contact them directly.
+<p/>
+Alternatively, if your department/organization is willing to organise and fund a Greenstone workshop in your area, we might be able to run it (depending on what other commitments we have). We would require our air travel and basic accomodation to be paid for, and if you're feeling generous, a donation towards our research costs would be appreciated. 
+}
+
+
+######################################################################
+# 'preferences' page
+package preferences
+######################################################################
+
+
+#------------------------------------------------------------
+# text macros
+#------------------------------------------------------------
+
+_textpresentationprefs_ {Presentation preferences}
+_textlanguage_ {Interface language:}
+_textencoding_ {Encoding:}
+_textformat_ {Interface format:}
+_textgraphical_ {Graphical}
+_texttextual_ {Textual}
Index: /other-projects/trunk/greenorg/macros/factsheet.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/factsheet.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/factsheet.dm	(revision 14149)
@@ -0,0 +1,152 @@
+package factsheet
+
+_content_ {
+
+_pageheading_(The Greenstone digital library software)
+<p>
+Greenstone is a suite of software for building and distributing digital library collections. It is not a digital library but a tool for building digital libraries. It provides a new way of organizing information and publishing it on the Internet in the form of a fully-searchable, metadata-driven digital library. It has been developed and distributed in cooperation with UNESCO and the Human Info NGO in Belgium. It is open-source, multilingual software, issued under the terms of the GNU General Public License. Its developers received the 2004 IFIP Namur award for "contributions to the awareness of social implications of information technology, and the need for an holistic approach in the use of information technology that takes account of social implications."
+
+<h3>Technical</h3>
+<p>
+<b>Platforms.</b> Greenstone runs on all versions of Windows, and Unix, and Mac OS-X. It is very easy to install. For the default Windows installation absolutely no configuration is necessary, and end users routinely install Greenstone on their personal laptops or workstations. Institutional users run it on their main web server, where it interoperates with standard web server software (e.g. Apache).
+<p>
+<b>Interoperability.</b> Greenstone is highly interoperable using contemporary standards, It incorporates a server that can serve any collection over the Open Archives Protocol for Metadata Harvesting (OAI-PMH), and Greenstone can harvest documents over OAI-PMH and include them in a collection. Any collection can be exported to METS (in the Greenstone METS Profile, approved by the METS Editorial Board and published at <a href="http://www.loc.gov/standards/mets/mets-profiles.html">http://www.loc.gov/standards/mets/mets-profiles.html</a>), and Greenstone can ingest documents in METS form. Any collection can be exported to DSpace ready for DSpace's batch import program, and any DSpace collection can be imported into Greenstone.
+<p>
+<b>Interfaces.</b> Greenstone has two separate interactive interfaces, the Reader interface and the Librarian interface. End users access the digital library through the Reader interface, which operates within a web browser. The Librarian interface is a Java-based graphical user interface (also available as an applet) that makes it easy to gather material for a collection (downloading it from the web where necessary), enrich it by adding metadata, design the searching and browsing facilities that the collection will offer the user, and build and serve the collection.
+<p>
+<b>Metadata formats.</b> Users define metadata interactively within the Librarian interface. These metadata sets are predefined:
+<ul>
+<li>Dublin Core (qualified and unqualified)
+<li>RFC 1807
+<li>NZGLS (New Zealand Government Locator Service)
+<li>AGLS (Australian Government Locator Service)
+</ul>
+New metadata sets can be defined using Greenstone's Metadata Set Editor. "Plug-ins" are used to ingest externally-prepared metadata in different forms, and plug-ins exist for
+<ul><li>XML, MARC, CDS/ISIS, ProCite, BibTex, Refer, OAI, DSpace, METS</li></ul>
+<p><b>Document formats.</b> Plug-ins are also used to ingest documents. For textual documents, there are plug-ins for
+<ul><li>PDF, PostScript, Word, RTF, HTML, Plain text, Latex, ZIP archives, Excel, PPT, Email (various formats), source code</li></ul>
+For multimedia documents, there are plug-ins for
+<ul><li>Images (any format, including GIF, JIF, JPEG, TIFF), MP3 audio, Ogg Vorbis audio, and a generic plug-in that can be configured for audio formats, MPEG, MIDI, etc.</li></ul>
+<h3>User base</h3>
+<b>Distribution.</b> As with all open source projects, the user base for Greenstone is unknown. It is distributed on SourceForge, a leading distribution centre for open source software. 
+<p>
+<ul style="list-style: none;"><li><table>
+<tr><td>Distributed via SourceForge since:</td><td>Nov 2000</td></tr>
+<tr><td>Average downloads since then:</td><td>4500/month</td></tr>
+<tr><td>Currently running at:</td><td>4500/month</td></tr>
+<tr><td>Proportion of downloads that are documentation:</td><td>60%</td></tr>
+<tr><td>Proportion of downloads that are software:</td><td>40%</td></tr>
+<tr><td align='center'><table><tr><td >Of these,</td><td>80% are Windows binaries</td></tr>
+<tr><td></td><td>15% are Linux binaries</td></tr>
+<tr><td></td><td>5% are source</td></tr></table></td><td></td></tr></table></li></ul>
+<p><b>Examples.</b> Examples of public Greenstone collections (see http://www.greenstone.org for URLs) can be found at:
+<ul>
+<li>Association of Indian Labour Historians, Delhi
+<li>Auburn University, Alabama
+<li>California University at Riverside
+<li>Chicago University Library
+<li>Detroit Public Library
+<li>Gresham College, London
+<li>Hawaiian Electronic Library
+<li>Illinois Wesleyan University
+<li>Indian Institute of Management
+<li>Kyrgyz Republic National Library
+<li>LeHigh University, Pennsylvania
+<li>Mari El Republic, Russia
+<li>National Centre for Science Information, Bangalore, India
+<li>Netherlands Institute for Scientific Information Services
+<li>New York Botanical Garden
+<li>Peking University Digital Library
+<li>Philippine Research Education and Government Information Network
+<li>Secretary of Human Rights of Argentina
+<li>Slavonski Brod Public Library, Slovenia
+<li>State Library of Tasmania
+<li>Stuttgart University of Applied Sciences
+<li>Texas A&M University Center for the Study of Digital Libraries
+<li>University of Illinois
+<li>University of North Carolina ibiblio project
+<li>Vietnam National University
+<li>Vimercate Public Library, Milan, Italy
+<li>Washington Research Library Consortium
+<li>Welsh Books Council
+</ul>
+<p>
+<b>UN agencies</b> with an interest in Greenstone include
+<ul><li>UNESCO, Paris
+<ul style="list-style: none;"><li>Sponsors distribution of the Greenstone software as part of its Information for All programme</li></ul>
+<li>Food and Agriculture Organization (FAO), Rome
+<ul style="list-style: none;"><li>The Information Management Resource Kit uses Greenstone as the (only) example of digital library software in the Digitization and Digital Libraries self-instructional module (<a href="http://www.imarkgroup.org">http://www.imarkgroup.org</a>)</li></ul>
+<li>Institute for Information Technology in Education (IITE), Moscow
+<ul style="list-style: none;"><li>Have commissioned an extensive course on Digital libraries in education that uses Greenstone for all the practical work
+<li>United Nations University (UNU), Japan</li></ul>
+<ul style="list-style: none;"><li>Two CD-ROM collections of UNU material have been produced</li></ul>
+</ul>
+<p>
+<b>Humanitarian collections.</b> Greenstone is used by Human Info NGO in Belgium to produced collections of humanitarian information and distribute them on CD-ROM widely throughout the developing world. (For more information, contact Michel Loots <a href="mailto:mloots@humaninfo.org">mloots@humaninfo.org</a>)
+<p>
+<ul style="list-style: none;"><li><table><tr><td>Number of humanitarian collections:</td><td>approx 35-40</td></tr>
+<tr><td>Annual distribution of each one:</td><td>approx 5,000 copies</td></tr></table></li></ul>
+<p>
+<b>Languages.</b> One of Greenstone's unique strengths is its multilingual nature. The reader's interface is available in the following languages:
+<ul><li>
+Arabic, Armenian, Bengali, Catalan, Croatian, Czech, Chinese (both simplified and traditional), Dutch, English, Farsi, Finnish, French, Galician, Georgian, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Kannada, Kazakh, Kyrgyz, Latvian, Maori, Mongolian, Portuguese (BR and PT versions), Russian, Serbian, Spanish, Thai, Turkish, Ukrainian, Vietnamese</li></ul>
+The Librarian interface and the full Greenstone documentation (which is extensive) is in:
+<ul><li>English, French, Spanish, and Russian.</li></ul>
+<p>
+
+<b>Training</b> is a bottleneck for widespread adoption of any digital library software. Many international training courses have been run.
+<ul><li>UNESCO 
+<ul style="list-style: none;"><li>has sponsored training courses in Bangalore (2002 and 2003), Almaty (2003), Senegal (2004), Suva (2004)</li></ul>
+<li>Self-study courses
+<ul style="list-style: none;"><li>FAO and UNESCO IITE have produced training material on Greenstone in the Digitization and Digital Libraries self-instructional module available at <a href="http://www.imarkgroup.org">http://www.imarkgroup.org</a>.</li></ul>
+<li>Digital Library conferences
+<ul style="list-style: none;"><li>There have been Greenstone tutorials (on several occasions) at all major digital library conferences: JCDL, ECDL, ICADL, ICDL
+<li>Librararian conferences</li></ul>
+<ul style="list-style: none;"><li>There have been Greenstone workshops and presentations at LITA, DLF, ALA Annual Conference</li></ul>
+<li>Payson Institute, Tulane University
+<ul style="list-style: none;"><li>has run courses that use Greenstone collections as a resource in locations in Africa (Burkina Faso, Cameroon, Cote d'Ivoire, Democratic Republic of Congo, Ghana, Rwanda, Senegal, Sierra Leone, Togo) and Latin America (Argentina, Bolivia, Colombia, Ecuador, Guatemala)</li></ul>
+<li>Others
+<ul style="list-style: none;"><li>There have been several Greenstone courses in India (e.g. Khozikode, Poona), some in Canada (Vancouver, Calgary, Edmonton), one in Cuba (Havana).</li></ul>
+</li></ul>
+<p>
+<b>E-mail support</b>
+<p><ul style="list-style: none;"><li><table>
+<tr><td>Number of people on Greenstone email lists:</td><td>600</td></tr>
+<tr><td>Number of countries represented:</td><td>70</td></tr>
+<tr><td>Number of messages (excluding spam):</td><td>150/month</td></tr>
+</table></li></ul>
+<p>
+<h3>Endorsement by Mike Lesk</h3>-perhaps the leading U.S. guru in digital libraries
+<img src="_httpimg_/endorse1.jpg"/>
+Understanding Digital Libraries: Second Edition, Morgan Kaufmann, 2005
+<p>
+<img src="_httpimg_/endorse2.jpg"/>
+<p>
+<img src="_httpimg_/endorse3.jpg"/>
+<p>
+<img src="_httpimg_/endorse4.jpg"/>
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /other-projects/trunk/greenorg/macros/french.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/french.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/french.dm	(revision 14149)
@@ -0,0 +1,380 @@
+package Global
+
+_t17_ [l=fr] {Les tÃ©lÃ©chargements disponibles Ã  partir de la page <a href="_httppagex_(download)">tÃ©lÃ©chargement</a> sont hÃ©bergÃ©s par <a href="http://sourceforge.net">Sourceforge</a>.}
+
+_textimagepref_ [l=fr] {Page de prÃ©fÃ©rences}
+
+_textimagedocs_ [l=fr] {Manuels}
+_textimagedownload_ [l=fr] {TÃ©lÃ©charger}
+_textimageexamples_ [l=fr] {Exemples}
+_textimagesupport_ [l=fr] {Assistance}
+
+#------------------------------------------------------------
+# icons
+#------------------------------------------------------------
+
+## "PRÃFÃRENCES" ## top_nav_button ## cpref ##
+_httpiconcprefof_ [l=fr] {_httpimg_/fr/cprefof.gif}
+_httpiconcprefon_ [l=fr] {_httpimg_/fr/cprefon.gif}
+
+
+## "manuels" ## nav_bar_button ## tdocs ##
+_httpicontdocsof_ [l=fr] {_httpimg_/fr/tdocsof.gif}
+_httpicontdocson_ [l=fr] {_httpimg_/fr/tdocson.gif}
+
+## "tÃ©lÃ©charger" ## nav_bar_button ## tdl ##
+_httpicontdlof_ [l=fr] {_httpimg_/fr/tdlof.gif}
+_httpicontdlon_ [l=fr] {_httpimg_/fr/tdlon.gif}
+
+## "exemples" ## nav_bar_button ## texmpl ##
+_httpicontexmplof_ [l=fr] {_httpimg_/fr/texmplof.gif}
+_httpicontexmplon_ [l=fr] {_httpimg_/fr/texmplon.gif}
+
+## "assistance" ## nav_bar_button ## tsup ##
+_httpicontsupof_ [l=fr] {_httpimg_/fr/tsupof.gif}
+_httpicontsupon_ [l=fr] {_httpimg_/fr/tsupon.gif}
+
+
+#######################################################################
+
+package home
+
+_t1_ [l=fr] {A propos de Greenstone}
+
+_t2_ [l=fr] {Greenstone est une suite de logiciels pour la construction et la distribution de collections de bibliothÃšques numÃ©riques. Elle fournit une nouvelle maniÃšre d'organiser et de publier de l'information sur Internet et sur CD-ROM. Greenstone est produit par le <b> New Zealand Digital Library Project</b> Ã  l'<b>UniversitÃ© de Waikato</b>, et dÃ©veloppÃ© et distribuÃ© en collaboration avec <b>l'UNESCO</b> et l'ONG <b>l'ONG Human info </b>. C'est un logiciel <b>open source, multilingue</b>, Ã©ditÃ© sous les termes de GNU General Public License. Lisez le <a href="_httppagex_(factsheet)">Greenstone Fact Sheet</a> pour plus d'informations.}
+
+_namur_ [l=fr] {Le projet Greenstone est le septiÃšme laurÃ©at de la biennale <a href="http://www.info.fundp.ac.be/~jbl/IFIP/award.html">Namur award</a> qui rÃ©compense des laurÃ©ats ayant relever sur le plan international la conscience sur les implications sociales des technologies de l'information et de la communication.}
+
+_t3_ [l=fr] {L'UNESCO organise des atelier de formation rÃ©gionaux sur l'utilisation de Greenstone. En 2003, ils ont Ã©tÃ© organisÃ©s Ã  <a href="_httppagex_(report)">Bangalore, India</a> en AoÃ»t; Dakar, Senegal en Septembre, et <a href="_httppagex_(reportSuva)">Suva, Fidji</a> en Novembre. }
+_t3.save_ [l=fr] {<a href="http://sourceforge.net/project/showfiles.php?group_id=12123&release_id=202808">Here</a> is a package of all material that we prepared for the Suva workshop: lectures, labs, documents, test files, etc.  It focuses on building collections with the Librarian Interface.
+Please feel free to use it for learning -- or teaching! -- Greenstone.
+}
+
+_cdrom260_ [l=fr] {Le CD-ROM de l'UNESCO contenant Greenstone 2.60, avec en plus toute la documentation (Anglais/FranÃ§ais/Espagnol/Russe), 11 examples de collections documentÃ©s et les logiciels associÃ©s comme Java et ImageMagik, est disponible gratuitement auprÃšs de Jean-Claude Dauphin (jc.dauphin@unesco.org) ou Susannah Farey (s.farey@unesco.org). Utilisateurs de CDS/ISIS: tÃ©lÃ©charger les versions Ã  jour de <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/collect.cfg">collect\\isis-e\\etc\\collect.cfg</a> et <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/ISISPlug.pm">perllib\\plugins\\ISISPlug.pm</a> pour corriger les problÃšmes de construction des collections CDS/ISIS avec Greenstone 2.60.
+}
+
+_gsdl253_ [l=fr] {<a href="_httppagex_(download)">TÃ©lÃ©charger</a> Greenstone v2.53, qui contient de nombreuses corrections et amÃ©liorations, notamment: un nouveau module d'installation; GLI compatibilitÃ© avec Java 1.5.0; la possibilitÃ© d'importer des documents exportÃ©s de DSpace, et vice versa; un module HTMLPlug plus souple qui bloque les images uniquement dans les fichiers HTML traitÃ©s, and non dans les autres; nouveaux ensembles de mÃ©ta-donnÃ©es dans GLI: dont Dublin Core, NZGLS, AGLS, and RFC 1807; Construction avec indexation Lucene (vraiment cette fois!!); Un applet GLI amÃ©liorÃ© et beaucoup plus performant en ce qui concerne la bande passante; traitement ses sous-champs dans l'Ã©diteur Greenstone pour les mÃ©ta-donnÃ©es (GEMS).
+}
+
+_upgradeyourgreenstoneinstallation_ [l=fr] {Si vous utilisez le serveur local de librairie sous Windows, vous pouvez tÃ©lÃ©charger une mise Ã  jour permettant de faire Ã©voluer Greenstone vers la version 2.52.  <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.51-locallibrary-to-2.52-upgrade.zip?download">Upgrade from Greenstone 2.51</a>, ou <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.50-locallibrary-to-2.52-upgrade.zip?download">upgrade from Greenstone 2.50</a>. Si vous mettez Ã  jour un CD-ROM de l'UNESCO (version 2.50) vous devez effacer le fichier macros\\home.dm et renommer le fichier macros\\home.dm.bak en  macros\\home.dm une fois la mise Ã  jour effectuÃ©e.  }
+
+_glp252_ [l=fr] {<a href="http://sourceforge.net/project/showfiles.php?group_id=12123&package_id=89483">TÃ©lÃ©chargement</a>toutes les langues disponibles pour l'interface du programme de biliothÃšque Greenstone (version 2.52 uniquement) : les quatre langues de base, anglais, franÃ§ais, espagnol et russe ; et les iterfaces  pour l'arabe, l'armÃ©nien, le catalan, le chinois, le croate, le tchÃšque, le nÃ©erlandais, le farsi, le finnois, le galicien, le georgien, l'allemand, le grecque, l'hÃ©breux, l'hindi, l'indonÃ©sien, l'italien, le japonais, le kannada, le kazakh, le letton, le maori, le portugais (BrÃ©sil), le portugais (Portugal),  le serbe,  le thaÃ¯,  le turque, ), l'ukrainien,  et le vietnamien. 
+}
+
+_support_ [l=fr] {Nous avons rÃ©organisÃ© notre <a href="_gwcgi_?a=p&p=support">page d'aide</a>, et inclus de nouvelles informations sur les dons aux projet Greenstone, les recherches contractuelles et les aides commerciales.
+}
+
+_gs3proto_ [l=fr] {Greenstone 3 est une refont complÃšte de Greenstone, actuellement en dÃ©veloppement. La version standard de Greenstone (Greenstone 2) reste le meilleur choix pour quasiment  tous les utilisateurs. Greenstone 3 pourra utiliser des collections dÃ©jÃ  existante, il n'y Ã  donc aucun risque d'incompatibilitÃ© futur en continuant d'utiliser Greenstone 2. <a href="http://www.greenstone.org/greenstone3.html">Greenstone 3 home page</a>.
+}
+
+_surveyheading_ [l=fr] {EnquÃªte Utilisateurs}
+
+_survey_ [l=fr] {<a href="_surveylink_">Voici</a> les rÃ©sultats d'une enquÃªte auprÃšs des utilisateurs de Greenstone entreprise en 2004-5. Laura Sheble de l'UniversitÃ© de Caroline du Nord prÃ©pare une nouvelle enquÃªte.}
+
+_t4_ [l=fr] {<a href="http://sourceforge.net/projects/greenstone/">TÃ©lÃ©chargez</a> Greenstone v2.41. Greenstone Librarian Interface (GLI), un frontend pour la fonctionnalitÃ© de construction de collection de Greenstone, facile Ã  utiliser, a Ã©tÃ© intensivement testÃ© et dÃ©boguÃ©. Si vous ne l'avez pas encore essayÃ©, c'est le bon moment de le faire (et si vous aviez rencontrÃ©  des problÃšmes avant, essayez SVP cette version). Greenstone 2.41 inclut aussi un nouveau plugin pour le trtaitement de bases de donnÃ©es CDS/ISIS, la possibilitÃ© d'exporter des collections multiples sur CD-ROM, et beaucoup d'autres corrections de bogues et amÃ©liorations.}
+
+_t5_ [l=fr] {Une des parties les plus difficiles dans l'utilisation de Greenstone est la dÃ©finition d'un fichier de configuration pour votre collection. Pour aider Ã  apprendre comment le faire,  plusieurs exemples de collections bien documentÃ©s ont Ã©tÃ© placÃ©s Ã  <a href="http://nzdl.org">nzdl.org</a> qui explique sur la page d'accueil de la collection comment ils ont Ã©tÃ© rassemblÃ©s.}
+
+_t6_ [l=fr] {Toute l'interface Greenstone, avec toute la documentation est disponible en <b>Anglais</b>, <b>FranÃ§ais</b>, <b>Espagnol</b>, <b>Russe</b> et <b>Kazakh</b>. Greenstone a aussi des interfaces dans plusieurs <a href="_httpwikiintn_">autres langues</a>. Nous sommes Ã  la recherche de <a href="_httpwikiintnmaintainers_">volontaires</a> pour ajouter des interfaces dans d'autres langues et aider Ã  maintenir celles qui existent dÃ©jÃ .}
+
+_t7_ [l=fr] {Le but du programme Greenstone est de permettre ses utilisateurs, en particulier les universitÃ©s, bibliothÃšques et autres institutions publiques, de dÃ©velopper leurs propres bibliothÃšques numÃ©riques. Les bibliothÃšques numÃ©riques changent de maniÃšre radicales la faÃ§on dont l'information est dissÃ©minÃ©e et acquis dans les communautÃ©s et institutions partenaire de l'UNESCO dans les domaines de l'Ã©ducation, de la science et de la culture Ã  travers le monde et pareticuliÃšrement dans les pays en voie de dÃ©veloppement. Nous espÃ©rons que ce programme encouragera le dÃ©veloppement de bibliothÃšques numÃ©riques pour partager les informations et les placer dans le domaine public. Un complÃšment d'information peut Ãªtre obtenu dans le livre <a href="http://www.nzdl.org/howto">How to build a digital library</a>, Ã©crit par deux membres du projet.
+}
+
+_t8_ [l=fr] {Les fichiers collect.cfg de plusieurs collections de <a href="http://www.nzdl.org">www.nzdl.org</a> sont disponibles <a href="_httpwikicolcfg_">ici</a>.}
+
+_t9_ [l=fr] {Ce logiciel est dÃ©veloppÃ© et distribuÃ© dans le cadre d'un effort de coopÃ©ration internationale Ã©tablie en Aout 2000 entre trois parties.}
+
+_t10_ [l=fr] {Le Projet de BibliothÃšque NumÃ©rique de Nouvelle Zellande Ã  l'UniversitÃ© de Waikato}
+
+_t11_ [l=fr] {Le logiciel Greenstone est issu de ce projet, et cette initiative a Ã©tÃ© prise en charge par la Sous-Commission de la Communication de la Commission Nationale pour l'UNESCO de la Nouvelle Zellande dans le cadre de la contribution de la Nouvelle Zellande au programme de l'UNESCO.}
+
+_t12_ [l=fr] {Organisation des Nations Unies pour l'Education, la Science et la Culture}
+
+_t13_ [l=fr] {La dissÃ©mination de l'information Ã©ducative, scientifique et culturelle Ã  travers le monde, et particuliÃšrement son accessibilitÃ© dans les pays en dÃ©veloppement, est un objectif central de l'UNESCO poursuivi dans le cadre de son Programme intergouvernement Information pour Tous, et les technologies de l'information et de la communication appropriÃ©es sont considÃ©rÃ©es comme un outil important dans ce contexte.}
+
+_t14_ [l=fr] {L'ONG Human Info, basÃ©e Ã  Anvers, Belgique}
+
+_t15_ [l=fr] {Ce projet travaille avec des organismes de l'ONU et d'autres ONG, et s'est forgÃ© une rÃ©putation mondiale pour son travail de numÃ©risation d'une documentation d'intÃ©rÃªt le dÃ©veloppement humain et la mise Ã  disposition gratuite de cette documentation aux pays en dÃ©veloppement et sur une base de recrouvement de coÃ»t pour les autres.}
+
+_t16_ [l=fr] {Si vous tÃ©lÃ©chargez Greenstone et l'installez avec les collections de dÃ©monstration standard ou si vous l'installez Ã  partir du CD-ROM Greenstone, cela va ressembler exactement Ã  <a href="http://www.nzdl.org/cgi-bin/democols/library">ceci</a>. Si vous installez Greenstone Ã  partir du CD-ROM de l'UNESCO, l'aspect sera semblable, mais seulement quelques collections seront prÃ©sentÃ©es, et seulement quatre langues - anglais, espagnol, franÃ§ais et russe - seront disponibles. Pour activer les autres langues, veuillez voir le <i>Activant les autres langues</i> du tutoriel sur <a href="_httpwikitutorial_/fr/update_greenstone_installation.htm">Mise Ã  jour d'une installation Greenstone</a>.
+}
+
+_gsoaheading_ [l=fr] {Organisation de Soutien pour Greenstone en Afrique (OSGA)}
+
+_gsoa_ [l=fr] {<a href="_httpdocsdir_/GSOA Feasibility Study.pdf">Voici</a> l'Ã©tude de faisabilitÃ© OSGA entreprise avec l'aide de l'UNESCO en 2005 et terminÃ©e en fÃ©vrier 2006. Le public peut se rÃ©fÃ©rer au <a href="_httpdocsdir_/GSOA Survey French.pdf">questionnaire de l'enquÃªte</a> qui a Ã©tÃ© diffusÃ© largement auprÃšs de professionnels africains au cours de cette Ã©tude. Des commentaires ou des questions peuvent Ãªtre adressÃ©es Ã  <a href="mailto:rosejohnzz@hotmail.com">John Rose</a> qui a coordonnÃ© cette Ã©tude pour Greenstone et qui est en train de Ã©tudier les possibilitÃ©s d'une suite.}
+
+#######################################################################
+package docs
+
+_t80_ [l=fr] {Documentation Greenstone}
+
+#######################################################################
+
+package download
+
+_t18_ [l=fr] {TÃ©lÃ©charger Greenstone}
+
+_t19_ [l=fr] {Greenstone est un logiciel open source, distribuÃ© dans les conditions de la <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. Il fonctionne sousr Windows et Unix, et aussi bien le code source que les exÃ©cutables sont disponibles pour tÃ©lÃ©chargement. Il est entiÃšrement documentÃ© en anglais, franÃ§ais, espagnol et russe.}
+
+_t20_ [l=fr] {SÃ©lectionnez la distribution Greenstone de votre choix dans la liste ci-dessous. Chaque distribution fournit une  interface complÃšte en anglais, franÃ§ais, espagnole, et russe.}
+
+_t21_ [l=fr] {Chaque distribution contient Ã©galement le "Greenstone Librarian Interface", un outil graphique pour la construction de bibliothÃšques numÃ©riques. Il vous donne accÃšs aux fonctionnalitÃ©s de Greenstone Ã  partir d'une interface "pointer et cliquer" facile Ã  utiliser. Pour utiliser cet outil, vous aurez besoin d'un Environnement Java Run-Time adÃ©quat que vous pouvez tÃ©lÃ©cherger de <a href="http://java.sun.com/j2se/">here</a> -- la derniÃšre version est actuellement 1.4.2 (choisissez JRE, pas SDK).}
+
+_t22_ [l=fr] {Distribution Windows}
+
+_t23_ [l=fr] {C'est la distribution qu'il vous faut si vous voulez dÃ©marrer Greenstone sous n'importe quel environnement Windows 32 bits (c'est-Ã -dire Windows 95/98/Me/NT2000/XP etc...).}
+
+_t24_ [l=fr] {Notez que Greenstone fonctionne aussi sous Windows 16 bits (Windows 3.1/3.11). Cependant, le programme d'installation utilisÃ© dans cette distribution ne fonctionne pas pour ces versions de Windows. Veuillez <a href="_httpagex_(support)">nous contacter</a> si vous avez besoin d'une version de Greenstone pour Windows 16 bits.}
+
+_t25_ [l=fr] {En utilisant cette distribution vous pouvez soit installer la "local library" ou la "web library", soit installer et compiler le code source (cliquer <a href="_httpwikilocallibrary_">ici</a> pour une description des diffÃ©rences entre la "local library" et la "web library"). Pendant le processus d'installation, on vous demendera quelle forme de Greenstone vous souhaiter installer.}
+
+_t26_ [l=fr] {Cette distribution contient tout ce dont vous avez besoin pour utiliser Greenstoneet pour construire de nouvelles collections Greenstone (ainsi qu'une collection de dÃ©monstration dÃ©jÃ  construite) . Cependant, certaines possibilitÃ©s ne sont pas inclues, principalement dans un souci d'avoir une distribution aussi petite que possible. Voir <a href="#packages">ci-dessous</a> pour savoir comment se procurer ces possibilitÃ©s manquantes.}
+
+_t27_ [l=fr] {Cette distribution utilise un  progamme d'installation standard de Windows; tÃ©lÃ©chargez simplement le fichier et double-cliquez dessus pour l'installation (voir le <a href="_httpguide_(Install,fr)">Guide d'installation</a> pour des instructions d'installation plus dÃ©taillÃ©es).
+}
+
+_t28_ [l=fr] {Distribution Unix}
+
+_t29_ [l=fr] {Ceci est la distribution recommandÃ©e si vous installez Greenstone sous n'importe quelle forme de Unix.}
+
+_t30_ [l=fr] {Cette distribution vient avec des binaires linux statiquement liÃ©s. Cependant, il contient aussi le code source Greenstone pour la compilation sur d'autres formes d'Unix (ou sur Linux si vous prÃ©fÃ©rez ne pas utiliser les binaires fournis).}
+
+_t31_ [l=fr] {Cette distribution contient tout ce dont vous avez besoin pour exÃ©cuter Greenstone (y compris une collection de dÃ©monstration prÃ©-construite) et pour construire de nouvelles collections Greenstone. Certaines fonctionnalitÃ©s relatives au fonctionnement ne sont pas incluses pour limiter la taille de la distribution. Voir <a href="#packages">ci-dessous</a> pour plus de dÃ©tails sur les moyens d'obtenir ces fonctionnalitÃ©s manquantes.}
+
+_t32_ [l=fr] {Pour installer cette distribution, dÃ©compressez l'archive tar gzip et executez le script shell <i>Install.sh</i> depuis le rÃ©pertoire  <i>gsdl-X.XX-unix/Unix</i>
+(pour plus de dÃ©tails voyez <a href="_httpguide_(Install,en)">le guide d'installation <a>  }
+
+_t33_ [l=fr] {Distribution Mac OS X}
+
+_t34_ [l=fr] {Cett distribution contient des binaires dynamiquement liÃ©s pour Mac OS X s'exÃ©cutant sur des plate-formes PowerPC.}
+
+_t35_ [l=fr] {Cette distribution a Ã©tÃ© testeÃ© sur Mac OS X 10.2.6 et 10.2.3. Elle contient les binaires prÃ©-construites,  ainsi que la collection pour dÃ©monstration prÃ©-construites. Cette distribution contient aussi la bibliotheque d'interface de Greenstone pour construire des collections.}
+
+_t36_ [l=fr] {Distribution de source seule}
+
+_t37_ [l=fr] {Cette distribution contient le code source Greenstone accompagnÃ© de la mÃªme collection de dÃ©monstration que pour les distributions ci-dessus (mÃªme si la collection n'est pas prÃ©-construite dans cette distribution).}
+
+_t38_ [l=fr] {Cette distribution n'a pas de procÃ©dure d'installation automatique (exÃ©cuter <i>Install.sh</i>ne fonctionnera pas ici). A moins d'Ãªtre sÃ»r de savoir ce que vous faites, vous souhaitez probablement obtenir l'une des distributions ci-dessus; chacune d'elles contient le code source Greenstone. Notez que vous pouvez obtenir une version mise Ã  jour du code source Greenstone Ã  tout instant en utilisant <a href="_httpwiki_/Greenstone_CVS">cvs</a>.}
+
+_t39_ [l=fr] {Les paquetages supplÃ©mentaires suivants peuvent Ãªtre tÃ©lÃ©chargÃ©s et installÃ©s avec une installation Greenstone dÃ©jÃ  existante pour ajouter des fonctionnalitÃ©s omises dans les distributions ci-dessus.}
+
+_langpack_ [l=fr] {Paquet Greenstone pour les langues}
+
+_langpackdesc_ [l=fr] {Ce paquet contient l'interface Greenstone dans diffÃ©rentes langues; voir<a href="_httpwikiintn_">ici</a> pour les details.}
+
+_t40_ [l=fr] {Paquetage d'exportation vers CD-ROM}
+
+_t41_ [l=fr] {Ce paquet active la fonction d'exportation vers CD-ROM Ã  partir du "Collecteur" de Greenstone.}
+
+_t42_ [l=fr] {Pour installer, il suffit de tÃ©lÃ©charger le fichier (cela fonctionne aussi bien sur Windows que sur Unix et n'importe quelle version  de Greenstone supÃ©rieure Ã  2.34) et extraire l'archive zip dans le rÃ©pertoire gsdl\\bin\\windows de votre installation Greenstone existante.}
+
+_t43_ [l=fr] {Les utilitaires suivants ont Ã©tÃ© conÃ§us pour Ãªtre utilisÃ©s avec Greenstone.}
+
+_dllearningteachingmaterial_ [l=fr] {Le paquetage suivant devrait vous permettre d'en savoir plus sur Greenstone et de l'enseigner Ã  d'autres personnes}
+
+_teachingmaterial_ [l=fr] {MatÃ©riel didactique}
+_1day_ [l=fr] {(1 jour)}
+_3day_ [l=fr] {(3 jour)}
+_4day_ [l=fr] {(4 jour)}
+_dlteachingmaterialdesc_ [l=fr] {MatÃ©riel prÃ©parÃ© Ã  l'occasion de divers ateliers de travail Greenstone; voir <a href="_httpwikiworkshops_">ici</a> pour les dÃ©tails.}
+
+_documentedexamplecollections_ [l=fr] {Exemple de collection documentÃ©e}
+
+_t44_ [l=fr] {L'organisateur}
+
+_t45_ [l=fr] {L'Organisateur est une application Windows utile pour la production automatique de plusieurs des fichiers de configuration (metadata.xml,sub.txt,  etc...) requis par des collections complexes de Greenstone.}
+
+_t46_ [l=fr] {Pour installer, il suffit de tÃ©lÃ©charger et de double-cliquer sur le fichier exÃ©cutable auto-extractible.}
+
+
+#######################################################################
+
+package examples
+
+_t47_ [l=fr] {Exemples de Greenstone en Action}
+
+_t48_ [l=fr] {Projet BibliothÃšque NumÃ©rique de Nouvelle zellande}
+
+_t49_ [l=fr] {Un site de dÃ©monstration mis en place par les dÃ©veloppeurs de Greenstone, le Nouveau Projet de BibliothÃšque NumÃ©rique de Nouvelle Zellande. Ce site contient plusieurs collections, allant de l'information humanitaire aux rapports techniques sur l'informatique et Ã  des collections de dÃ©monstration de documents chinois et arabes.}
+
+_t50_ [l=fr] {BibliothÃšque Greenstone russe}
+
+_t51_ [l=fr] {Un site Greenstone contenant plusieurs collections en langue russe. Ce site a Ã©tÃ© mis en place par un dÃ©partement du gouvernement rÃ©gional dans la rÃ©publique Mari El de la FÃ©dÃ©ration de Russie.}
+
+_t52_ [l=fr] {Projet Gutenberg}
+
+_t53_ [l=fr] {Un projet en cours pour produire et distribuer des Ã©ditions Ã©lectroniques gratuites de littÃ©rature; le Projet Gutenberg contient actuellement plus de 3700 titres, de Shakespeare Ã  Dickes en passant par les sÅurs Bronte. Ce site, maintenu par Ibiblio, l'un des sites mirroirs de Gutenberg, utilise Greenstone pour rendre toute la collection Gutenberg accessible sous une forme permettant une recherche intÃ©grale.}
+
+_t54_ [l=fr] {UniversitÃ© des Sciences AppliquÃ©es de Stuttgart}
+
+_t55_ [l=fr] {Hochshule der Medien - une bibliothÃšque numÃ©rique "Information et Media" crÃ©Ã©e par l'UniversitÃ© des Sciences AppliquÃ©es de Stuttgart, Allemagne.}
+
+_t56_ [l=fr] {Archives du CollÃšge Gresham}
+
+_t57_ [l=fr] {Une bibliothÃšque numÃ©rique crÃ©Ã©e au CollÃšge Gresham, Londres, Angleterre}
+
+_t58_ [l=fr] {Centre d'Etudes pour les BibliothÃšques NumÃ©riques}
+
+_t59_ [l=fr] {UniversitÃ© A&M du Texas - Un site de recherche sur les bibilothÃšques numÃ©riques contenant des propotypes de collections Greenstones avec un accent sur sur les Flores NumÃ©riques.}
+
+_t60_ [l=fr] {BibliothÃšque NumÃ©rique de l'UniversitÃ© de PÃ©kin}
+
+_t61_ [l=fr] {Deux collections expÃ©rimentales crÃ©es Ã  l'UniversitÃ© de PÃ©kin.}
+
+_t62_ [l=fr] {Recherche sur la rÃ©cupÃ©ration d'information musicale}
+
+_t63_ [l=fr] {Page d'accueil virtuelle de la recherche sur la rÃ©cupÃ©ration d'information musicale.}
+
+_t64_ [l=fr] {Album Photo}
+
+_t65_ [l=fr] {Une collection de photos prises par <a href="mailto:gordon.paynter@ucr.edu">Gordon Paynter</a>.}
+
+_t66_ [l=fr] {Collections SpÃ©ciales de la Washington Research Library Consortium}
+
+_t67_ [l=fr] {MatÃ©riau numÃ©rique des collections spÃ©ciales des huit universitÃ©s de WRLC de Washington, D.C., USA}
+
+_t68_ [l=fr] {Archives de Indian Labour}
+
+_t69_ [l=fr] {Un projet en partenariat entre le V.V. Giri National Labour Institute et l'Association des Historiens du Travail de l'Inde. Les archives d'Indian labour sont dÃ©diÃ©es Ã  la conservation et la mise Ã  disposition de documents sur la classe ouvriÃšre indienne qui se dÃ©gradent Ã  une trÃšs grande vitesse.}
+
+_t70_ [l=fr] {Collections de dÃ©monstration NCSI}
+
+_t71_ [l=fr] {Collections de dÃ©monstrations crÃ©Ã©es par les Ã©tudients et le personnel du Centre National d'Information Scientifique de l'Institut Indien pour les Sciences, Bangalore, Inde. Plusieurs de ces collections contiennent des Ã©lÃ©ments en Kannada et Hindi.}
+
+_t72_ [l=fr] {Jardin Botanique de New York}
+
+_t73_ [l=fr] {Le projet de numÃ©risation du livre rare de la BibliothÃšque LuEsther T. Mertz du Jardin Botanique de New York.}
+
+_t74_ [l=fr] {La Collection Ponts NumÃ©riques de l'UniversitÃ© Lehigh.}
+
+_t75_ [l=fr] {Une collection contenant trente livres sur les ponts, tous publiÃ©s entre 1811 et 1899. La collection a Ã©tÃ© crÃ©Ã©e Ã  l'UniversitÃ© Lehigh, Pennsylvanie et prÃ©sente un interface utilisateur fortement personnalisÃ©e.}
+
+_t76_ [l=fr] {Chopin Early Editions}
+
+_t77_ [l=fr] {Une collection d'images numÃ©riques des premiÃšres Ã©ditions imprimÃ©es des compositions musicales de FrÃ©dÃ©rique Chopin. La collection a Ã©tÃ© crÃ©Ã©e par la bibliothÃšque de l'UniversitÃ© de Chicago, et une fois terminÃ©e, elle comportera toute la collection complÃšte de plus de 400 des premiÃšres Ã©ditions de Chopin. Le fichier de configuration de la collection Greenstone a aussi Ã©tÃ© rendu disponible et peut Ãªtre tÃ©lÃ©chargÃ© <a href="http://chopin.lib.uchicago.edu/gsdl/collect/chopin/etc/collect.cfg">ici</a>.}
+
+_t78_ [l=fr] {BibliothÃšque Publique Slavonski Brod}
+
+_t79_ [l=fr] {Le projet pilote de numÃ©risation de la collection des Ã©tudes locales de la BibliothÃšque Publique de Slavonski Brod, Croatie.}
+
+_ex1t_ [l=fr] {Mirabilia Vicomercati}
+
+_ex1d_ [l=fr] {Mirabilia Vicomercati est un projet en cours gÃ©rÃ© par Vimercate Public Library (Milan, Italie) et qui a pour objectif la numÃ©risation de sources primaires d'histoire locale. Plusieurs collections seront fournies (photographies, posters, cartes, textes, rÃ©fÃ©rences, multimÃ©dia) pour rendre accessible, promouvoir et prÃ©server la mÃ©moire historique de Vimercate et de son territoire. }
+
+_ex2t_ [l=fr] {Collection numÃ©rique Argus de l'UniversitÃ© Wesleyland de l'Illinois}
+
+_ex2d_ [l=fr] {Le journal The Argus de l'universitÃ© Wesleyland de l'Illinois est publiÃ© sous la supervision des Ã©tudiants depuis 1894. Cette collection numÃ©rique fait partie d'un projet en cours qui a pour objet la conservation et l'accÃšs aux numÃ©ros Argus publiÃ©s de 1894 Ã  2000.}
+
+_ex3t_ [l=fr] {Droits Humains en Argentine}
+
+_ex3d_ [l=fr] {Ce site contient des documents, photos et livres concernant les fichiers des enfants kidnappÃ©s pendant la dictature de 1976 Ã  1983, la lÃ©gislation sur l'identitÃ©, l'information relative Ã  la jurisprudence, et plusieurs autres Ã©lÃ©ments. Il a Ã©tÃ© crÃ©e par le SÃ©crÃ©tariat aux Droits Humains d'Argentine sous l'Ã©gide de la ComisiÃ³n Nacional por el Derecho a la Identidad (CONADI), qui est une Commission Nationale qui lutte pour les droits de la personne Ã  avoir une identitÃ©, particuliÃšrement quand ses parents ont disparu.}
+
+_ex4t_ [l=fr] {Auburn University Libraries Digital Library}
+
+_ex4d_ [l=fr] {Ce site contient deux collections Greenstone. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&cpostcard">Alabama Postcards</a> a plus de 300 cartes postales dÃ©crivant des bÃ¢timents, des sites naturels, des Ã©vÃšnements et autres scÃšnes dans diverses villes, grandes et petites, de l'Alabama du 20Ãšme siÃšcle. Ces images sont catÃ©gorisÃ©es selon les endroits et aussi selon les titres. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=about&c=alauths">Alabama Authors</a> fournit des informations sur les auteurs de l'Alabama du 20Ãšme siÃšcle qui sont gÃ©rÃ©es et mises Ã  jour par l'Alabama Library Association. Cette collection a vu le jour sous la forme d'un document imprimÃ© crÃ©e dans WordPerfect 5.2 et a Ã©tÃ© rÃ©Ã©ditÃ©e plusieurs fois avant sa version Greenstone qui permet une recherche complÃšte.}
+
+_ex5t_ [l=fr] {Collection de partitions musicales de la BibliothÃšque d'Etat de Tasmanie}
+
+_ex5d_ [l=fr] {Ce site fournit environ deux cent Ã©lÃ©ments du riche patrimoine de musique Ã©crite dans la BibliothÃšque d'Etat des Collections d'HÃ©ritage de Tasmanie. Ils vont des annÃ©es 1840 aux annÃ©es 1930 et  incluent des morceaux pour piano et autres instruments, des arrangements de bandes de cuivre et chansons de toutes sortes - populaires, sacrÃ©es, patriotiques, et mÃªme des chansons Ã©crites pour encourager les touristes Ã  venir en Tasmanie.}
+
+_ex6t_ [l=fr] {Institut indien de base de donnÃ©es de publications de la Science}
+
+_ex6d_ [l=fr] {L'institut indien de la Science, Bangalore - 560012, Karnataka, Inde est le premier Ã©tablissement de recherche et enseignement avancÃ©s, avec plus de 2000 chercheurs actifs travaillant dans presque tous les secteurs scientifiques de pointe.  CrÃ©Ã© en 1909 par J.N.Tata, l'institut Ã©dite environ 2.000 publications chaque annÃ©e, selon une Ã©tude, comprenant des articles de journaux, des publications de confÃ©rence, brevets, rapports, livres, chapitres de livre.  Un effort particulier est fait ici pour compiler ces publications, identifier leurs sources, supprimer les doublons, normaliser les dÃ©tails des mÃ©ta-donnÃ©es.  La base de donnÃ©es est publiÃ©e sur le web Ã  lâaide de Greenstone.}
+
+_ex7t_ [l=fr] {Les livres du passÃ© / Llyfrau o'r Gorffennol}
+
+_ex7d_ [l=fr] {Les livres du passÃ© est une collection en ligne de livres Gallois d'intÃ©rÃªt culturel national qui ont longtemps Ã©tÃ© Ã©puisÃ©, et qui sont peu susceptible d'Ãªtre rÃ©imprimÃ© par des moyens traditionnels.  Les textes sont disponibles sous deux formes - les pages originales des livres sous forme d'images , et le texte Ã©lectronique entiÃšrement indexÃ© et imprimable.  DÃ©veloppÃ© par Culturenet Cymru et le Conseil des livres Gallois, la collection des livres du passÃ© est une ressource librement accessible Ã  tous.  Le site Web sera dÃ©veloppÃ© et enrichi pendant les prochaines annÃ©es pour contenir encore beaucoup plus de livres en langues anglaise et Galloise.}
+
+_ex8t_ [l=fr] {RÃ©seau d'information gouvernemental des Philippines sur la recherche, l'Ã©ducation.}
+
+_ex8d_ [l=fr] {PREGINET est un rÃ©seau national de diffusion qui relie les Ã©tablissements scolaires, de recherche, et gouvernementaux aux Philippines.  L'institut pour l'avancement de la Science et de la technologie (ASTI) a crÃ©Ã© une plateforme de bibliothÃšque numÃ©rique Ã  l'usage des Ã©tablissements associÃ©s au rÃ©seau PREGINET.  Ils ont construit des collections pour le journal philippin ICT et microÃ©lectronique (PJICTM), les bulletins publiÃ©s par PREGINET, et la collection de vidÃ©o d'ASTI.}
+
+# -- Missing translation: _ex9t_
+
+_ex9d_ [l=fr] {Ulukau met Ã  disposition des ressources pour l'utilisation, l'enseignement, et le perfectionnement de la langue hawaÃ¯enne.  Il y a cinq collections:  Ka HoÊ»oilina: Puke Pai Ê»Ålelo HawaiÊ»i" (Le traditionel: Journal des ressources en langue  hawaÃ¯ennes), des journaux hawaÃ¯ens, Baibala Hemolele (la bible hawaÃ¯enne), des dictionnaires, et des livres en langue hawaÃ¯enne.}
+
+_ex10t_ [l=fr] {BibliothÃšque publique De Detroit:  Collection De E. Azalia Hackley}
+
+_ex10d_ [l=fr] {Cette collection de paroles de musique se compose plus de 500 morceaux Ã©crits au 19Ãšme et 20Ãšme siÃšcle et Ã©ditÃ©s entre 1799 et 1922.  Les thÃšmes des chansons se rapportent Ã  la vie dans les plantations au dÃ©but du 19Ãšme siÃšcle dans le sud amÃ©ricain, la pÃ©riode de guerre civile, y compris l'abolitionnisme, l'Ã©mancipation et la reconstruction, ainsi que la musique populaire de dÃ©but du 20Ãšme siÃšcle, et les thÃšmes stÃ©rÃ©otypÃ©s liÃ©s aux chanteurs noirs.}
+
+_ex11t_ [l=fr] {Institut Indien de Management, Kozhikode}
+
+_ex11d_ [l=fr] {L'Institut Indien de Management Kozhikode (IIMK)(<a href="http://www.iimk.ac.in">http://www.iimk.ac.in</a>) est une Ã©cole de haut niveau mise en place par le gouvernement indien en 1996. Le Centre pour le DÃ©veloppement des BibliothÃšques Digitales  de l'IIMK utilise des logiciels GSDL pour l'Ã©laboration de sa bibliothÃšques digitale. Cette bibliothÃšques digitales, toujours plus grande est multi-mÃ©dia, comporte plusieurs types de support et d'Ã©ditions dont des livres, monographies, rapports, journaux, dossiers et films Ã©ducatifs. La partie films est une addition rÃ©cente  qui n'utilise que des logiciels et standards libres (OpenSource)  pour son Ã©laboration.}
+
+_ex12t_ [l=fr] {BibliothÃšque Digitale de Sciences Naturelles, UniversitÃ© Nationale du Viet-Nam, Ho Chi Minh-Ville (en vietnamien)}
+
+_ex12d_ [l=fr] {Ce site contient deux collections Greenstone. "Library and Information Science" qui contient des articles sur les sciences bibliothÃ©caires et de l'information provenant du club des bibliothÃšques, FESAL, ainsi que les bulletins de la bibliothÃšque des sciences naturelles depuis 1998. "Library Equipment" contient des photos d'Ã©quipements de bibliothÃšque provenant de bibliothÃšques  situÃ©es aux Ã©tats unis, singapour, la thaÃ¯lande et le vietnam. Ce site est maintenu par la bibliothÃšque ses sciences naturelles, VNU-HCM.}
+
+_ex13t_ [l=fr] {Centre de Documentation SRM}
+
+_ex13d_ [l=fr] {Version de dÃ©monstration d'un CD-ROM avec des rÃ©fÃ©rences bibliographiquelittÃ©ratures sur la mÃ©thodologie de la recherche sociale. Les quelques 1500 rÃ©fÃ©rences (53 000 sur le CD-ROM) sont rÃ©parties en deux sous-collecions  : 1958-1990 et 1991-2004. LE centre de documentation SMR fait partie de l'Institut NÃ©erlandais pour l'Information Scientifique (NIWI)}
+
+_ex14t_ [l=fr] {BibliothÃšque Nationale du Kyigyzstan}
+
+_ex14d_ [l=fr] {PoÃªme Ã©pique Kyrgyz Manas, un livre rare de la bibliothÃšque Nationale du Kyrgyzstan; et une collection de dissertations et rÃ©sumÃ©s prÃ©parÃ©s par des scientifiques  Kyrgyz sur des sujets tels que l'agriculture, la mÃ©decine, l'industrie miniÃšre, l'histoire et la culture de la rÃ©pubique Kyrgyz.}
+
+
+
+#######################################################################
+
+package support
+
+_t109_ [l=fr] {Assistance Greenstone}
+
+_tsupportintro_ [l=fr] {Vous voulez apprendre un peu plus au sujet de Greenstone? Vous avez des difficultÃ©s pour installer ou construire des collections? Il y a beaucoup d'autres ressources d'aide auxquelles vous pouvez vous adresser.
+}
+
+_tfaqh_ [l=fr] {Liste des questions les plus frÃ©quentes (FAQ)}
+_tfaqb_ [l=fr] {La FAQ contient la liste des questions les plus frÃ©quentes concernant Greenstone et leurs rÃ©ponses, ainsi que comment se procurer le logiciel, comment installater et exÃ©cuter Greenstone, et comment construire des collections.
+}
+
+_tarchh_ [l=fr] {Archives de la liste de diffusion Greenstone }
+_tarchb_ [l=fr] {Cette collection contient toutes les questions et rÃ©ponses Ã©changÃ©es sur les deux listes de discussion Greenstone. Effectuer une recherche dans cette collection est une bonne faÃ§on de trouver des rÃ©ponses aux questions les plus frÃ©quentes et qui ne font pas encore parties de la FAQ. Celle-ci est mise Ã  jour rÃ©guliÃšrement. }
+
+_tmanualh_ [l=fr] {Documentation Greenstone}
+_tmanualb_ [l=fr] {Greenstone est accompagnÃ© par plusieurs manuels et guides. Cette page donne les liens sur ces documents qui existent en plusieurs langues.}
+
+_tdlbookh_ [l=fr] {Comment construire une bibliothÃšque numÃ©rique.
+}
+_tdlbookb_ [l=fr] {Qu'appelle-t-on une bibliothÃšque numÃ©rique? A quoi cela ressemble-t-il? D'ou proviennent les informations? Comment procÃšde-t-on? Par quoi commencer? C'est un livre qui rÃ©pond Ã  ces questions d'une faÃ§on simple et pragmatique, en mettant l'accent sur l'aspect pratique   Le livre dÃ©crit aussi les concepts et l'utilisation du logiciel Greenstone.}
+
+_tmaillisth_ [l=fr] {Listes de discussion Greenstone}
+
+
+_t104_ [l=fr] {Il y a deux listes de discussion dÃ©diÃ©es principalement aux discussions concernant le logiciel Greenstone de bibloiothÃšque numÃ©rique. Il est conseillÃ© aux utilisateurs actifs de s'inscrire Ã  une des listes ou bien aux deux et de participer aux discussions<b>Veuillez aussi consulter les autres sources d'information</b>, en particulier les  
+<a href="http://www.nzdl.org/gsarchives">archives des listes de discussion</a>, <b>avant d'envoyer une question Ã  l'une des listes</b>.}
+
+_t105_ [l=fr] {Liste pour les utilisateurs de Greenstone}
+
+_t106_ [l=fr] {Cette liste est pour discuter en gÃ©nÃ©ral de Greenstone. Pour envoyer un message Ã  cette liste, adressez-le Ã  <a
+href="mailto:greenstone-users@list.scms.waikato.ac.nz">greenstone-users@list.scms.waikato.ac.nz</a>. }
+
+_t107_ [l=fr] {Liste pour les dÃ©veloppeurs de Greenstone}
+
+_t108_ [l=fr] {Cette liste est plus pour des discussions techniques entre les gens qui dÃ©veloppent ou modifient Greenstone. Pour envoyer un message Ã  cette liste, adressez-le Ã  <a
+href="mailto:greenstone-devel@list.scms.waikato.ac.nz">greenstone-devel@list.scms.waikato.ac.nz</a>. <strong>Note:</strong>
+Vous devez d'abord vous inscrire Ã  la liste avant d'envoyer un message.}
+
+_tsuppformh_ [l=fr] {Bordereau d'assistance Web}
+_tsuppformb_ [l=fr] {<b>En dernier recours</b>, si vous ne pouvez pas utiliser les listes de discussion pour quelque raison que ce soit, utilisez le bordereau d'assistance pour envoyer une demande Ã  l'Ã©quipe Greenstone.}
+
+_ttrainingcourseh_ [l=fr] {Formation Ã  Greenstone}
+
+# -- Missing translation: _ttrainingcourse_
+
+######################################################################
+# 'preferences' page
+package preferences
+######################################################################
+
+
+#------------------------------------------------------------
+# text macros
+#------------------------------------------------------------
+
+_textpresentationprefs_ [l=fr] {PrÃ©fÃ©rences de prÃ©sentation}
+_textlanguage_ [l=fr] {Langue de l'interface: }
+_textencoding_ [l=fr] {Encodage: }
+_textformat_ [l=fr] {Format de l'interface: }
+_textgraphical_ [l=fr] {Graphique}
+_texttextual_ [l=fr] {Textuel}
Index: /other-projects/trunk/greenorg/macros/gsoc.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/gsoc.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/gsoc.dm	(revision 14149)
@@ -0,0 +1,9 @@
+package gsoc
+
+_content_ {
+
+_pageheading_(_gsoc:t1001_)
+
+_t1002_
+
+}
Index: /other-projects/trunk/greenorg/macros/home.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/home.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/home.dm	(revision 14149)
@@ -0,0 +1,110 @@
+package home
+
+_content_ {
+
+_pageheading_(_home:t1_)
+
+<p>_t2_</p>
+<p>_t7_</p>
+
+<p><a name="multilingual"/>_t6_</p>
+
+_new_(_home:greenstone302release_)
+_new_(_home:enduserdoc_)
+
+_new_(_home:greenstonehistory_)
+_new_(_home:greenstone272_)
+_newnoimg_(_home:cdrom270u_)
+
+_newnoimg_(_home:greenstonewiki_)
+
+_newnoimg_(_home:imarkonline_)
+
+_newnoimg_(_home:remotegreenstone_)
+
+
+
+<p><a href="http://greenstonesupport.iimk.ac.in">_southasiasupport_</a><br>
+<a href="http://greenstone.docunautica.com/">Grupo de Usuarios EspaÃ±oles de Greenstone</a>
+    <br><a href="http://www.greenstone.fr">Greenstone en FranÃ§ais</a>
+</p>
+
+<!-- _new_(_home:support_) -->
+
+<p>_t84_</p>
+
+<p>_t5_ _t8_</p>
+
+<p>_t9_ </p>
+
+<table border="0" class="default">
+<tr valign="top">
+<td>
+<a href="http://nzdl.org"><b>_t10_</b></a>
+<br>
+_t11_
+<br>
+_namur_
+</td>
+<td></td>
+</tr>
+<tr valign="top">
+<td>
+<a href="http://www.unesco.org"><b>_t12_</b></a>
+<br>
+_t13_
+<br>
+_t3_
+</td>
+<td><a href="http://www.unesco.org"><img src="_httpimg_/unesco.gif" border="0"></a></td>
+</tr>
+<tr valign="top">
+<td>
+<a href="http://humaninfo.org"><b>_t14_</b></a>
+<br>
+_t15_
+</td>
+<td><a href="http://humaninfo.org"><img src="_httpimg_/ghproj.jpg" border="0"></a></td>
+</tr>
+</table>
+
+_subheading_(_home:surveyheading_)
+
+_home:survey_
+
+_subheading_(_home:gsoaheading_)
+
+_home:gsoa_
+
+_sf_
+
+}
+
+_surveylink_ {http://www.ils.unc.edu/~sheble/greenstone/survey.html}
+
+package homepref
+
+_javalinks_ {}
+_javalinks_ [v=1] {}
+
+_pagescriptextra_ {_preferences:pagescriptextra_}
+
+_content_ {
+<form name=PrefForm method=get action="_gwcgi_">
+<h3>_preferences:textpresentationprefs_</h3>
+
+<table border="0">
+<tr>
+<td>_preferences:textlanguage_</td>
+<td>_languageoption_</td>
+</tr>
+<!-- <tr valign="top">
+<td>_preferences:textencoding_</td>
+<td>_encodingoption_</td>
+</tr>
+<tr valign="top">
+_preferences:formatoption_
+</tr> -->
+</table>
+<p>
+}
Index: /other-projects/trunk/greenorg/macros/marathi.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/marathi.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/marathi.dm	(revision 14149)
@@ -0,0 +1,472 @@
+package Global
+
+# -- Missing translation: _t17_
+
+# -- Missing translation: _textimagepref_
+
+# -- Missing translation: _textimagedocs_
+# -- Missing translation: _textimagedownload_
+# -- Missing translation: _textimageexamples_
+# -- Missing translation: _textimagesupport_
+
+#------------------------------------------------------------
+# icons
+#------------------------------------------------------------
+
+# -- Missing translation: cpref
+# -- Missing translation: _httpiconcprefof_
+# -- Missing translation: _httpiconcprefon_
+
+
+# -- Missing translation: tdocs
+# -- Missing translation: _httpicontdocsof_
+# -- Missing translation: _httpicontdocson_
+
+## "à€¡à€Ÿà€à€šà€²à¥à€¡" ## nav_bar_button ## tdl ##  # Updated 30-Oct-2006 by shubha
+# -- Missing translation: _httpicontdlof_
+# -- Missing translation: _httpicontdlon_
+
+# -- Missing translation: texmpl
+# -- Missing translation: _httpicontexmplof_
+# -- Missing translation: _httpicontexmplon_
+
+# -- Missing translation: tsup
+# -- Missing translation: _httpicontsupof_
+# -- Missing translation: _httpicontsupon_
+
+# -- Missing translation: _textpagemoved_
+# -- Missing translation: _textredirect_
+
+#######################################################################
+
+package home
+
+# -- Missing translation: _t1_
+
+# -- Missing translation: _t2_
+
+# -- Missing translation: _namur_
+
+# -- Missing translation: _t3_
+
+_cdrom260_ [l=mr] {The UNESCO CD-ROM containing Greenstone 2.60, plus all documentation (English/French/Spanish/Russian), plus 11 documented example collections, plus associated software like Java and ImageMagick, is available at no charge from Jean-Claude Dauphin (jc.dauphin@unesco.org) or Susannah Farey (s.farey@unesco.org). CDS/ISIS users: download updated versions of <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/collect.cfg">collect\\isis-e\\etc\\collect.cfg</a> and <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/ISISPlug.pm">perllib\\plugins\\ISISPlug.pm</a> to fix problems building CDS/ISIS collections with Greenstone 2.60.
+}  # Updated 9-Nov-2006 by shubha
+
+# -- Missing translation: _imarkonline_
+ 
+# -- Missing translation: _greenstone271_
+ 
+# -- Missing translation: _greenstone270w_
+
+# -- Missing translation: _remotegreenstone_
+
+# -- Missing translation: _gs3proto_
+
+# -- Missing translation: _surveyheading_
+
+# -- Missing translation: _survey_
+
+
+# -- Missing translation: _t4_
+
+# -- Missing translation: _t5_
+
+# -- Missing translation: _t6_
+
+# -- Missing translation: _t7_
+
+# -- Missing translation: _t8_
+
+# -- Missing translation: _t9_
+
+# -- Missing translation: _t10_
+
+# -- Missing translation: _t11_
+
+# -- Missing translation: _t12_
+
+# -- Missing translation: _t13_
+
+# -- Missing translation: _t14_
+
+# -- Missing translation: _t15_
+
+# -- Missing translation: _t16_
+
+# -- Missing translation: _greenstonewiki_
+
+# -- Missing translation: _southasiasupport_
+
+# -- Missing translation: _gsoaheading_
+
+# -- Missing translation: _gsoa_
+
+
+
+#######################################################################
+package docs
+
+# -- Missing translation: _t80_
+
+#######################################################################
+
+package download
+
+# -- Missing translation: _t18_
+
+# -- Missing translation: _t19_
+
+_t20_ [l=mr] {Select the Greenstone distribution you require from the list below. Each
+distribution provides a complete interface in English, French, Spanish and
+Russian, and incomplete interfaces in many other languages.
+}  # Updated 10-Nov-2006 by shubha
+
+# -- Missing translation: _t21_
+
+# -- Missing translation: _t22_
+
+# -- Missing translation: _t23_
+
+# -- Missing translation: _t24_
+
+# -- Missing translation: _t25_
+
+# -- Missing translation: _t26_
+
+# -- Missing translation: _t27_
+
+# -- Missing translation: _t28_
+
+# -- Missing translation: _t29_
+
+# -- Missing translation: _t30_
+
+# -- Missing translation: _t31_
+
+# -- Missing translation: _t32_
+
+# -- Missing translation: _t33_
+
+# -- Missing translation: _t34_
+
+# -- Missing translation: _t35_
+
+# -- Missing translation: _tmacinstall_
+# -- Missing translation: _t36_
+
+# -- Missing translation: _t37_
+
+# -- Missing translation: _t38_
+
+# -- Missing translation: _t39_
+
+# -- Missing translation: _classicpack_
+# -- Missing translation: _classicpackdesc_
+
+# -- Missing translation: _langpack_
+
+# -- Missing translation: _langpackdesc_
+
+# -- Missing translation: _t40_
+
+# -- Missing translation: _t41_
+
+# -- Missing translation: _t42_
+
+# -- Missing translation: _t43_
+
+
+# -- Missing translation: _dllearningteachingmaterial_
+
+# -- Missing translation: _tutorialexercises_
+# -- Missing translation: _tutorialsamplefiles_
+# -- Missing translation: _tutorialexercisesmultimediafiles_
+
+# -- Missing translation: _dltutorialexercisesdesc_
+
+# -- Missing translation: _teachingmaterial_
+# -- Missing translation: _1day_
+# -- Missing translation: _3day_
+# -- Missing translation: _4day_
+
+# -- Missing translation: _dlteachingmaterialdesc_
+
+# -- Missing translation: _documentedexamplecollections_
+# -- Missing translation: _dldocumentedexamplecollectionsdesc_
+
+# -- Missing translation: _t44_
+
+# -- Missing translation: _t45_
+
+# -- Missing translation: _t46_
+
+
+#######################################################################
+
+package examples
+
+# -- Missing translation: _t47_
+
+_t48_ [l=mr] {à€šà¥à€¯à¥à€à¥à€²à€à€¡ à€
+à€à€à€¿à€à¥à€€ à€à¥à€°à€à€¥à€Ÿà€²à€¯ à€ªà¥à€°à€à€²à¥à€ª}  # Updated 9-Nov-2006 by shubha
+
+# -- Missing translation: _t49_
+
+# -- Missing translation: _t50_
+
+# -- Missing translation: _t51_
+
+# -- Missing translation: _t52_
+
+# -- Missing translation: _t53_
+
+# -- Missing translation: _t54_
+
+_t55_ [l=mr] {Hochschule der Medien - an "Information and Media" digital
+library created by the University of Applied Sciences, Stuttgart, Germany.
+One collection is "Digitale Biblioteken" (Digital Libraries), an open
+access collection of documents on the area of digital libraries.
+}  # Updated 3-Nov-2006 by shubha
+
+# -- Missing translation: _t56_
+
+# -- Missing translation: _t57_
+
+# -- Missing translation: _t60_
+
+# -- Missing translation: _t61_
+
+# -- Missing translation: _t62_
+
+# -- Missing translation: _t63_
+
+# -- Missing translation: _t64_
+
+# -- Missing translation: _t65_
+
+# -- Missing translation: _t66_
+
+# -- Missing translation: _t67_
+
+# -- Missing translation: _t68_
+
+# -- Missing translation: _t69_
+
+# -- Missing translation: _t70_
+
+# -- Missing translation: _t71_
+
+# -- Missing translation: _t72_
+
+# -- Missing translation: _t73_
+
+# -- Missing translation: _t74_
+
+# -- Missing translation: _t75_
+
+# -- Missing translation: _t76_
+
+# -- Missing translation: _t77_
+
+# -- Missing translation: _t78_
+
+# -- Missing translation: _t79_
+
+# -- Missing translation: _ex1t_
+
+# -- Missing translation: _ex1d_
+
+# -- Missing translation: _ex2t_
+
+# -- Missing translation: _ex2d_
+
+# -- Missing translation: _ex3t_
+
+# -- Missing translation: _ex3d_
+
+# -- Missing translation: _ex4t_
+
+# -- Missing translation: _ex4d_
+
+# -- Missing translation: _ex5t_
+
+# -- Missing translation: _ex5d_
+
+# -- Missing translation: _ex6t_
+
+# -- Missing translation: _ex6d_
+
+# -- Missing translation: _ex7t_
+
+# -- Missing translation: _ex7d_
+
+# -- Missing translation: _ex8t_
+
+# -- Missing translation: _ex8d_
+
+# -- Missing translation: _ex9t_
+
+# This: "Á" is needed to prevent Emacs from getting confused by the following Unicode
+# -- Missing translation: _ex9d_
+
+# -- Missing translation: _ex10t_
+
+# -- Missing translation: _ex10d_
+
+# -- Missing translation: _ex11t_
+
+# -- Missing translation: _ex11d_
+
+# -- Missing translation: _ex12t_
+
+# -- Missing translation: _ex12d_
+
+_ex13t_ [l=mr] {à€à€ž à€à€° à€à€® à€Šà€žà¥à€€à€à€µà€ à€à¥à€à€Šà¥à€°}  # Updated 9-Nov-2006 by shubha
+
+# -- Missing translation: _ex13d_
+
+# -- Missing translation: _ex14t_
+
+# -- Missing translation: _ex14d_
+
+# -- Missing translation: _ex15t_
+
+
+# -- Missing translation: _ex15d_
+
+# -- Missing translation: _ex16t_
+
+_ex16d_ [l=mr] {The Cushing/Whitney Medical Digital Library is a growing collection of digital resources made available on the Web for scholarship. The Medical Digital Library Committee coordinates the library's digitization activities. Its goals include expanding access to the library's unique collections for scholarly research, and life-cycle management of digital objects.  The first collection consists of 83 mid-19th century oil paintings rendered by Western-trained artist Lam Qua of Chinese patients with tumors under the care of Yale-trained medical missionary Peter Parker.}  # Updated 22-Nov-2006 by shubha
+
+# -- Missing translation: _ex17t_
+
+# -- Missing translation: _ex17d_
+
+# -- Missing translation: _ex18t_
+
+# -- Missing translation: _ex18d_
+
+# -- Missing translation: _ex19t_
+
+# -- Missing translation: _ex19d_
+
+# -- Missing translation: _ex20t_
+
+# -- Missing translation: _ex20d_
+
+_ex21t_ [l=mr] {à€Šà€ªà¥à€€à€°à€à€Ÿà€šà€Ÿ}  # Updated 30-Oct-2006 by shubha
+
+# -- Missing translation: _ex21d_
+
+# -- Missing translation: _ex22t_
+
+# -- Missing translation: _ex22d_
+
+# -- Missing translation: _ex23t_
+
+# -- Missing translation: _ex23d_
+
+# -- Missing translation: _ex24t_
+
+_ex24d_ [l=mr] {The MOST Digital Library contains results from research carried out during the first ten years of the MOST Programme. The themes covered include Drugs, Globalization and Governance, International Migration, Multicultural Societies, Poverty Eradication, Social transformations, Sustainability, Urban Development and HIV/AIDS. The MOST digital library offers a brief abstract of each document (in English, French and Spanish) that identifies the key issues and arguments in a few lines. The database contains the documents in their original language (English, French or Spanish) and in translation if such a version exists. The user interface is currently in English only, but will shortly also be available in French and Spanish.}  # Updated 18-Nov-2006 by shubha
+
+# -- Missing translation: _ex25t_
+
+# -- Missing translation: _ex25d_
+
+# -- Missing translation: _ex26t_
+
+# -- Missing translation: _ex26d_
+
+# -- Missing translation: _ex27t_
+# -- Missing translation: _ex27d_
+
+# -- Missing translation: _ex28t_
+
+# -- Missing translation: _ex28d_
+
+# -- Missing translation: _ex29t_
+
+# -- Missing translation: _ex29d_
+
+# -- Missing translation: _ex30t_
+
+# -- Missing translation: _ex30d_
+
+# -- Missing translation: _ex31t_
+
+# -- Missing translation: _ex31d_
+
+# -- Missing translation: _ex32t_
+
+_ex32d_ [l=mr] {PADDLE provides full text access to a comprehensive collection of Pacific education material. This includes publications from the participating Ministries of Education including strategic plans, education legislation, curriculum frameworks and school policies. It also contains national development plans, statistics and budget information for the fifteen Pacific countries.  PADDLE also includes material from international and regional organisations including UNESCO, the Commonwealth Secretariat, the Commonwealth of Learning, Pacific Resources for Education and Learning (PREL), and the Pacific Islands Forum Secretariat. In recognition of the low bandwidth in the Pacific PADDLE is also available on CD.}  # Updated 9-Nov-2006 by shubha
+
+# -- Missing translation: _ex33t_
+# -- Missing translation: _ex33d_
+
+# -- Missing translation: _ex34t_
+# -- Missing translation: _ex34d_
+
+# -- Missing translation: _ex35t_
+# -- Missing translation: _ex35d_
+
+
+
+#######################################################################
+package support
+
+# -- Missing translation: _t109_
+
+# -- Missing translation: _tsupportintro_
+
+_twikih_ [l=mr] {à€à¥à€°à¥à€šà€žà¥à€à¥à€š à€Šà€žà¥à€€à€à€µà€ à€µà€¿à€à¥}  # Updated 30-Oct-2006 by shubha
+# -- Missing translation: _twikib_
+# -- Missing translation: _tfaqh_
+# -- Missing translation: _tfaqb_
+
+# -- Missing translation: _tarchh_
+# -- Missing translation: _tarchb_
+
+# -- Missing translation: _tmanualh_
+# -- Missing translation: _tmanualb_
+
+# -- Missing translation: _tdlbookh_
+# -- Missing translation: _tdlbookb_
+
+# -- Missing translation: _tmaillisth_
+
+
+# -- Missing translation: _t104_
+
+# -- Missing translation: _t105_
+
+# -- Missing translation: _t106_
+
+# -- Missing translation: _t107_
+
+# -- Missing translation: _t108_
+
+# -- Missing translation: _tsuppformh_
+# -- Missing translation: _tsuppformb_
+
+# -- Missing translation: _ttrainingcourseh_
+
+# -- Missing translation: _ttrainingcourse_
+
+
+######################################################################
+# 'preferences' page
+package preferences
+######################################################################
+
+
+#------------------------------------------------------------
+# text macros
+#------------------------------------------------------------
+
+# -- Missing translation: _textpresentationprefs_
+# -- Missing translation: _textlanguage_
+# -- Missing translation: _textencoding_
+# -- Missing translation: _textformat_
+_textgraphical_ [l=mr] {à€à€à¥à€€à¥à€¬à€§à¥à€Š}  # Updated 9-Nov-2006 by shubha
+# -- Missing translation: _texttextual_
Index: /other-projects/trunk/greenorg/macros/pref.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/pref.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/pref.dm	(revision 14149)
@@ -0,0 +1,75 @@
+package preferences
+
+# set within server
+
+# this macro will be set to _textprefschanged_ when the "set preferences"
+# button has been pressed
+_prefschanged_ {}
+
+
+#######################################################################
+# scripts
+#######################################################################
+
+_getargsfunction_ {
+function getargs () \{
+  return argk + args + argm + argo + argrd + arghd + argb + argqf + argqb + argfqn;
+\}
+}
+
+
+_pagescriptextra_ {
+// preferences scripts generated from \_preferences:pagescriptextra\_
+
+argk = "";
+args = "";
+argm = "";
+argo = "";
+argrd = "";
+arghd = "";
+argb = "";
+argqf = "";
+argqb = "";
+argfqn = "";
+
+_getargsfunction_
+
+function updatel () \{
+  value = document.PrefForm.l.options[document.PrefForm.l.selectedIndex].value;
+  href = location.href;
+  if (href.match(/&l=[\\w\\-]+/)) href = href.replace(/&l=[\\w\\-]+/, "&l=" + value);
+  else href += "&l=" + value;
+  if (!location.href.match(/&nl=1$/)) href += "&nl=1";
+  location.href = href + getargs();
+\}
+
+function updatev () \{
+  value = document.PrefForm.v.options[document.PrefForm.v.selectedIndex].value;
+  href = location.href;
+  if (href.match(/&v=\\d/)) href = href.replace(/&v=\\d/, "&v=" + value);
+  else href += "&v=" + value;
+  location.href = href + getargs();
+\}
+
+function updatew () \{
+  value = document.PrefForm.w.options[document.PrefForm.w.selectedIndex].value;
+  href = location.href;
+  if (href.match(/&nw=[^&]+/)) href = href.replace(/&nw=[^&]+/, "&nw=" + value);
+  else href += "&nw=" + value;
+  if (!location.href.match(/&nl=0$/)) href += "&nl=0";
+  location.href = href + getargs();
+\}
+}
+
+
+# set from within pageaction
+_languageoption_ {}
+_encodingoption_ {}
+
+_formatoption_ {
+<td>_textformat_</td>
+<td><select name="v" onChange="updatev();">
+  <option value="0"_If_("_cgiargv_" eq "0", selected)>_textgraphical_
+  <option value="1"_If_("_cgiargv_" eq "1", selected)>_texttextual_
+</select></td>
+}
Index: /other-projects/trunk/greenorg/macros/reportSuva.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/reportSuva.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/reportSuva.dm	(revision 14149)
@@ -0,0 +1,32 @@
+package reportSuva
+
+_content_ {
+
+<h2>UNESCO Pacific Regional Training Workshop on Greenstone Digital Library Software</h2>
+
+<h3>24-26 November 2003, University of the South Pacific, Suva, Fiji</h3>
+
+<p>
+A UNESCO Pacific regional training workshop on the Greenstone Digital Library Software was conducted at the Library of the University of the South Pacific, Suva, Fiji, from 24-26 November 2003. This international workshop was planned and supported by the UNESCO Communication and Information programme to promote the development and sharing of digital library collections using the Greenstone software. 
+<p>
+Greenstone is a suite of software for building and distributing digital library collections. It provides a new way of organizing information and publishing it on the Internet or on CD-ROM. It is open-source software, issued under the terms of the GNU General Public License. It is produced by the New Zealand Digital Library Project at the University of Waikato, and developed and distributed in cooperation with UNESCO and the Human Info NGO. The aim of Greenstone is to empower users, particularly in universities, libraries and other public service institutions, to build their own digital libraries. More details of the software and example digital libraries built using the software is available at http://www.greenstone.org.
+<p>
+Use of Greenstone internationally is growing very rapidly. Increasing activity on the Greenstone mailing lists is an indication of its growing popularity. Wide varieties of digital collections have been developed, including historical, educational, cultural, and research collections, in several languages. UNESCO is promoting Greenstone with the goal of enabling public service institutions to deploy digital libraries for sharing public domain information. 
+<p>
+The Fiji workshop was attended by 15 participants from 7 countries in the Pacific region: Fiji, Marshall Islands, Papua New Guinea, Samoa, Solomon Islands, Tonga, and Vanuatu. Most of the participants were librarians and library systems personnel from national and educational institutions in these countries. The workshop was designed and conducted by members of the New Zealand Digital Library project. The content was based on an earlier workshop at NCSI, Indian Institute of Science; however, the newly-available Librarian Interface was used as the primary means of interacting with Greenstone. 
+<p>
+The workshop covered the following aspects of Greenstone: overview of features, capabilities, and applications; platforms, installation, and configuration; using the Greenstone Librarian Interface to build collections and add and use metadata; advanced features of the Librarian Interface; sample collections; multilingual support; new interface languages. Most of the presentation and demonstration sessions were followed by laboratory sessions where the participants experimented with the package through carefully designed exercises. During the lab sessions, each participant built a small Greenstone collection of images about tourism in their home country, downloaded from the Web, with manually assigned metadata. At the end of the workshop these were all placed on a self-installing Greenstone CD-ROM entitled Pacific Tourism, and copies were made for participants to take away as a memento.
+<p>
+Each participant had a dedicated workstation with the Windows XP operating system. Apart from the printed course material, Greenstone and associated software were distributed to the participants on CD-ROM. The version of Greenstone that was used was a preliminary edition of the December 2003 release of Greenstone (Version 2.41).
+<p>
+Course evaluation forms were used to assess the effectiveness of presentations and lab exercises. Participants were asked to evaluate the presentations on a five-point scale (very poor, poor, fair, good, very good) in terms of pace, clear speech, helpful examples, approachability, and an overall rating. For the lab sessions, the parameters were: suitable material, help available, clarity of assignments, and appropriate difficulty, and an overall rating. Overall, presentations received grade points ranging from 3 (fair) to 5 (very good), with the majority being 4 and 5; the overall average was 4.2. The pattern was similar for the labs, which also received an overall rating of 4.2.
+<p>
+Based on formal and informal feedback from the participants, the workshop was successful in imparting a conceptual and practical understanding of the use of Greenstone for developing digital collections. There was a consensus that further time was needed to cover all the features of Greenstone that participants wanted to learn about, and many expressed interest in a more advanced follow-up workshop. However, opinion was split as to whether any additional time should be spent in presenting new information or reinforcing existing material through more lab exercises. In fact, it might be useful to divide attendees on the basis of their prior knowledge and experience and run parallel sessions.
+<p>
+All course material (slightly revised to correct minor errors that were discovered during the workshop) will be made available on the Greenstone web site for others to use in future workshops.
+<p>
+Ian H. Witten<br>
+New Zealand Digital Library Project<br>
+1 December 2003
+
+}
Index: /other-projects/trunk/greenorg/macros/russian.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/russian.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/russian.dm	(revision 14149)
@@ -0,0 +1,596 @@
+package Global
+
+_t17_ [l=ru] {ÐÐ°Ð³ÑÑÐ·ÐºÐž ÐŽÐŸÑÑÑÐ¿ÐœÑ Ñ <a href="_httppagex_(download)">Ð·Ð°Ð³ÑÑÐ·ÐºÐ°</a> ÑÑÑÐ°ÐœÐžÑÐ°
+Ð¿ÐŸÑÐµÑÐ°Ð»Ð°ÑÑ <a href="http://sourceforge.net">Sourceforge</a>.}
+
+_textimagepref_ [l=ru] {ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž}
+
+_textimagedocs_ [l=ru] {Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²Ð°}
+_textimagedownload_ [l=ru] {ÐÐ°Ð³ÑÑÐ·ÐžÑÑ}
+_textimageexamples_ [l=ru] {ÐÑÐžÐŒÐµÑÑ}
+_textimagesupport_ [l=ru] {ÐÐŸÐŽÐŽÐµÑÐ¶ÐºÐ°}
+
+#------------------------------------------------------------
+# icons
+#------------------------------------------------------------
+
+## "ÐÐÐ¡Ð¢Ð ÐÐÐÐ" ## top_nav_button ## cpref ##
+_httpiconcprefof_ [l=ru] {_httpimg_/ru/cprefof.gif}
+_httpiconcprefon_ [l=ru] {_httpimg_/ru/cprefon.gif}
+
+
+## "Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²Ð°" ## nav_bar_button ## tdocs ##
+_httpicontdocsof_ [l=ru] {_httpimg_/ru/tdocsof.gif}
+_httpicontdocson_ [l=ru] {_httpimg_/ru/tdocson.gif}
+
+## "ÐÐ°Ð³ÑÑÐ·ÐžÑÑ" ## nav_bar_button ## tdl ##
+_httpicontdlof_ [l=ru] {_httpimg_/ru/tdlof.gif}
+_httpicontdlon_ [l=ru] {_httpimg_/ru/tdlon.gif}
+
+## "ÐÑÐžÐŒÐµÑÑ" ## nav_bar_button ## texmpl ##
+_httpicontexmplof_ [l=ru] {_httpimg_/ru/texmplof.gif}
+_httpicontexmplon_ [l=ru] {_httpimg_/ru/texmplon.gif}
+
+## "Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐ°" ## nav_bar_button ## tsup ##
+_httpicontsupof_ [l=ru] {_httpimg_/ru/tsupof.gif}
+_httpicontsupon_ [l=ru] {_httpimg_/ru/tsupon.gif}
+
+
+#######################################################################
+
+package home
+
+_t1_ [l=ru] {Ð Greenstone}
+
+_t2_ [l=ru] {Greenstone ÑÐ²Ð»ÑÐµÑÑÑ Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÐŒ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÑÐŒ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµÐŒ ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ Ðž ÑÐ°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÐµÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº. ÐÐœ Ð¿ÑÐµÐŽÐŸÑÑÐ°Ð²Ð»ÑÐµÑ ÐœÐŸÐ²ÑÐ¹ Ð¿ÑÑÑ ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÐž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐž ÐµÐµ Ð² ÐÐœÑÐµÑÐœÐµÑÐµ ÐžÐ»Ðž ÐœÐ° CD-ROM. Greenstone Ð²ÑÐ¿ÐŸÐ»ÐœÐµÐœ Ð² ÑÐ°ÐŒÐºÐ°Ñ
+ <b>ÐÑÐŸÐµÐºÑÐ° ÐœÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐŸÐ¹ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž</b>Ð¿ÑÐž<b>Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐµ ÐÐ°Ð¹ÐºÐ°ÑÐŸ</b>Ðž ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐ°Ðœ Ðž ÑÐ°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÐµÐœ Ð² ÑÐŸÑÑÑÐŽÐœÐžÑÐµÑÑÐ²Ðµ Ñ <b>Ð®ÐÐÐ¡ÐÐ</b>Ðž<b>ÐÐµÐ¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÐŸÐ¹ ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÐµÐ¹ Ð³ÑÐŒÐ°ÐœÐžÑÐ°ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž</b>. ÐÐœ ÑÐ²Ð»ÑÐµÑÑÑ<b>ÐŸÑÐºÑÑÑÑÐŒ, ÐŒÐœÐŸÐ³ÐŸÑÐ·ÑÑÐœÑÐŒ</b>Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÑÐŒ Ð¿ÑÐŸÐŽÑÐºÑÐŸÐŒ, Ð²ÑÐ¿ÑÑÐºÐ°ÐµÐŒÑÐŒ Ð¿ÐŸÐŽ ÑÐµÑÐŒÐžÐœÐ°ÐŒÐž ÐÐµÐœÐµÑÐ°Ð»ÑÐœÐŸÐ¹ ÐŸÐ±ÑÐµÑÑÐ²ÐµÐœÐœÐŸÐ¹ Ð»ÐžÑÐµÐœÐ·ÐžÐž GNU.}
+
+_namur_ [l=ru] {ÐÑÐŸÐµÐºÑ Greenstone ÑÐ²Ð»ÑÐµÑÑÑ ÑÐµÐŽÑÐŒÑÐŒ Ð¿ÐŸÐ»ÑÑÐ°ÑÐµÐ»ÐµÐŒ ÐŽÐ²ÑÑ
+Ð»ÐµÑÐœÐžÑ
+ ÐœÐ°Ð³ÑÐ°ÐŽ ÐÐ°ÐŒÑÑÐ° <a href="http://www.info.fundp.ac.be/~jbl/IFIP/award.html">, ÐºÐŸÑÐŸÑÑÐ¹ Ð¿ÑÐžÑÑÐ¶ÐŽÐ°ÐµÑÑÑ Ð·Ð° ÑÐ²ÐµÐ»ÐžÑÐµÐœÐžÐµ Ð¿ÐŸÐœÐžÐŒÐ°ÐœÐžÑ ÐžÐœÑÐµÑÐœÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÑÑ
+ ÑÐŸÑÐžÐ°Ð»ÑÐœÐŸ Ð·ÐœÐ°ÑÐžÐŒÑÑ
+ ÑÐµÑ
+ÐœÐŸÐ»ÐŸÐ³ÐžÐ¹ Ð² ÐŸÐ±Ð»Ð°ÑÑÐž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž ÐºÐŸÐŒÐŒÑÐœÐžÐºÐ°ÑÐžÐž.}
+
+_t3_ [l=ru] {Ð®ÐÐÐ¡ÐÐ Ð¿ÑÐŸÐ²ÐŸÐŽÐžÑ ÑÐµÐ³ÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ ÑÑÐµÐœÐžÐœÐ³ÐŸÐ²ÑÐµ ÑÐµÐŒÐžÐœÐ°ÑÑ Ð¿ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ Greenstone. Ð 2003 Ð³ÐŸÐŽÑ ÐŸÐœÐž Ð¿ÑÐŸÐ²ÐŸÐŽÐžÐ»ÐžÑÑ Ð² Ð°Ð²Ð³ÑÑÑÐµ Ð² ÐÐœÐŽÐžÐž, ÐÐ°ÐœÐ³Ð°Ð»ÐŸÑÐµ <a href="_httppagex_(report)">, Ð² ÑÐµÐœÑÑÐ±ÑÐµ - Ð² Ð¡ÐµÐœÐµÐ³Ð°Ð»Ðµ, ÐÐ°ÐºÐ°Ñ Ðž Ð² ÐœÐŸÑÐ±ÑÐµ Ð² Ð€ÐžÐŽÐ¶Ðž, Ð¡ÑÐ²Ð° <a href="_httppagex_(reportSuva)">. <a href="http://sourceforge.net/project/showfiles.php?group_id=12123&release_id=202808">. ÐÐŽÐµÑÑ </a> Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÑÐµÑ Ð¿Ð°ÐºÐµÑ Ð²ÑÐµÑ
+ ÐŒÐ°ÑÐµÑÐžÐ°Ð»ÐŸÐ², ÐºÐŸÑÐŸÑÑÐµ ÐŒÑ Ð¿ÑÐžÐ³ÐŸÑÐŸÐ²ÐžÐ»Ðž ÐŽÐ»Ñ ÑÐµÐŒÐžÐœÐ°ÑÐ° Ð² Ð¡ÑÐ²Ðµ: Ð»ÐµÐºÑÐžÐž, Ð»Ð°Ð±ÐŸÑÐ°ÑÐŸÑÐœÑÐµ Ð·Ð°ÐœÑÑÐžÑ, ÐŽÐŸÐºÑÐŒÐµÐœÑÑ, ÑÐµÑÑÐŸÐ²ÑÐµ ÑÐ°Ð¹Ð»Ñ Ðž Ñ.ÐŽ. ÐÐœÐž ÑÐŸÐºÑÑÐžÑÑÑÑÑÑ ÐœÐ° Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÐž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÐŸÐ³ÐŸ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ°. ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÐžÑ
+ ÑÐ²ÐŸÐ±ÐŸÐŽÐœÐŸ ÐŽÐ»Ñ ÐŸÐ±ÑÑÐµÐœÐžÑ ÐžÐ»Ðž Ð¿ÑÐµÐ¿ÐŸÐŽÐ°Ð²Ð°ÐœÐžÑ Greenstone.}
+_t3.save_ [l=ru] {<a href="http://sourceforge.net/project/showfiles.php?group_id=12123&release_id=202808">Here</a> is a package of all material that we prepared for the Suva workshop: lectures, labs, documents, test files, etc.  It focuses on building collections with the Librarian Interface.
+Please feel free to use it for learning -- or teaching! -- Greenstone.
+}
+
+
+_upgradeyourgreenstoneinstallation_ [l=ru] {ÐÑÐ»Ðž ÐÑ ÑÐ¿ÑÐ°Ð²Ð»ÑÐµÑÐµ ÐÐµÑÑÐœÑÐŒ ÑÐµÑÐ²ÐµÑÐŸÐŒ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐœÐ° Windows, ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð·Ð°Ð³ÑÑÐ·ÐžÑÑ ÐŒÐ°Ð»ÐµÐœÑÐºÐžÐ¹ Ð¿Ð°ÐºÐµÑ, ÑÑÐŸÐ±Ñ ÐŒÐŸÐŽÐµÑÐœÐžÐ·ÐžÑÐŸÐ²Ð°ÑÑGreenstone 2.52. <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.51-locallibrary-to-2.52-upgrade.zip?download">ÐŒÐŸÐŽÐµÑÐœÐžÐ·Ð°ÑÐžÑ ÐžÐ· Greenstone 2.51</a>, ÐžÐ»Ðž <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.50-locallibrary-to-2.52-upgrade.zip?download"> ÐŒÐŸÐŽÐµÑÐœÐžÐ·Ð°ÑÐžÑ ÐžÐ· Greenstone 2.50</a>.. ÐÑÐ»Ðž Ð²Ñ ÐŒÐŸÐŽÐµÑÐœÐžÐ·ÐžÑÑÐµÑÐµ  Ð®ÐÐÐ¡ÐÐ 2.50 CD-ROM, Ð²Ñ ÐŽÐŸÐ»Ð¶ÐœÑ ÑÐŽÐ°Ð»ÐžÑÑ  macros\\home.dm ÑÐ°Ð¹Ð» Ðž Ð¿ÐµÑÐµÐžÐŒÐµÐœÐŸÐ²Ð°ÑÑ  ÑÐ°Ð¹Ð» macros\\home.dm.bak Ð² macros\\home.dm Ð¿ÐŸÑÐ»Ðµ ÑÐŸÐ³ÐŸ, ÐºÐ°Ðº ÐŒÐŸÐŽÐµÑÐœÐžÐ·Ð°ÑÐžÑ Ð·Ð°ÐºÐŸÐœÑÐžÐ»Ð°ÑÑ. }
+
+_glp252_ [l=ru] {<a href="http://sourceforge.net/project/showfiles.php?group_id=12123&package_id=89483">Download</a> Ð²ÑÐµ ÑÐ·ÑÐºÐŸÐ²ÑÐµ ÐžÐœÑÐµÑÑÐµÐ¹ÑÑ, ÐŽÐŸÑÑÑÐ¿ÐœÑÐµ ÐŽÐ»Ñ  ÑÐžÑÑÐŸÐ²ÐŸÐ³ÐŸ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Greenstone (Ð²ÐµÑÑÐžÑ 2.52 ÑÐŸÐ»ÑÐºÐŸ): ÑÐµÑÑÑÐµ "ÐŸÑÐœÐŸÐ²ÐœÑÑ
+" ÑÐ·ÑÐºÐ° Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐžÐ¹, ÑÑÐ°ÐœÑÑÐ·ÑÐºÐžÐ¹, ÐžÑÐ¿Ð°ÐœÑÐºÐžÐ¹, ÑÑÑÑÐºÐžÐ¹; Ðž ÐžÐœÑÐµÑÑÐµÐ¹ÑÑ ÐŽÐ»Ñ Ð°ÑÐ°Ð±ÑÐºÐŸÐ³ÐŸ ÑÐ·ÑÐºÐ°, Ð°ÑÐŒÑÐœÑÐºÐŸÐ³ÐŸ, ÐºÐ°ÑÐ°Ð»Ð°ÐœÑÐºÐŸÐ³ÐŸ, ÐºÐžÑÐ°Ð¹ÑÐºÐŸÐ³ÐŸ, Ñ
+ÐŸÑÐ²Ð°ÑÑÐºÐŸÐ³ÐŸ, ÑÐµÑ
+ÑÐºÐŸÐ³ÐŸ, Ð³ÐŸÐ»Ð»Ð°ÐœÐŽÑÐºÐŸÐ³ÐŸ ÑÐ·ÑÐºÐ°, ÑÐ°ÑÑÐž, ÑÐžÐœÑÐºÐŸÐ³ÐŸ ÑÐ·ÑÐºÐ°, Ð³Ð°Ð»ÐžÑÐžÐ°ÐœÑÐºÐŸÐ³ÐŸ, Ð³ÑÑÐ·ÐžÐœÑÐºÐŸÐ³ÐŸ, ÐœÐµÐŒÐµÑÐºÐŸÐ³ÐŸ, Ð³ÑÐµÑÐµÑÐºÐŸÐ³ÐŸ, ÐµÐ²ÑÐµÐ¹ÑÐºÐŸÐ³ÐŸ, ÑÐ·ÑÐºÐ° Ñ
+ÐžÐœÐŽÐž, ÐžÐœÐŽÐŸÐœÐµÐ·ÐžÐ¹ÑÐºÐŸÐ³ÐŸ, ÐžÑÐ°Ð»ÑÑÐœÑÐºÐŸÐ³ÐŸ, ÑÐ¿ÐŸÐœÑÐºÐŸÐ³ÐŸ, ÐºÐ°ÐœÐœÐ°ÐŽÑÐºÐŸÐ³ÐŸ, ÐºÐ°Ð·Ð°Ñ
+ÑÐºÐŸÐ³ÐŸ, Ð»Ð°ÑÑÑÑÐºÐŸÐ³ÐŸ, ÐŒÐ°ÐŸÑÐž, Ð¿ÐŸÑÑÑÐ³Ð°Ð»ÑÑÐºÐŸÐ³ÐŸ (ÐÑÐ°Ð·ÐžÐ»ÐžÑ), ÑÐµÑÐ±ÑÐºÐŸÐ³ÐŸ, ÑÐ°Ð¹ÑÐºÐŸÐ³ÐŸ, ÑÑÑÐµÑÑÐºÐŸÐ³ÐŸ, ÑÐºÑÐ°ÐžÐœÑÐºÐŸÐ³ÐŸ, Ð²ÑÐµÑÐœÐ°ÐŒÑÐºÐŸÐ³ÐŸ.}
+
+_support_ [l=ru] {ÐÑ ÑÐµÐŸÑÐ³Ð°ÐœÐžÐ·ÐŸÐ²Ð°Ð»Ðž ÐœÐ°Ñ <a href="_gwcgi_?a=p&p=support">Support page</a> Ðž Ð²ÐºÐ»ÑÑÐžÐ»Ðž ÐœÐµÐŒÐœÐŸÐ³ÐŸ ÐœÐŸÐ²ÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž ÐŸ Ð¿ÐŸÐ¶ÐµÑÑÐ²ÐŸÐ²Ð°ÐœÐžÑÑ
+ Ð¿ÑÐŸÐµÐºÑÑ Greenstone , Ð·Ð°ÐºÐ»ÑÑÐ°Ñ ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÑ Ðž ÐºÐŸÐŒÐŒÐµÑÑÐµÑÐºÑÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÑ. }
+
+_gs3proto_ [l=ru] {Greenstone 3 - Ð¿ÐŸÐ»ÐœÐ°Ñ ÐŒÐŸÐŽÐµÑÐœÐžÐ·Ð°ÑÐžÑ Greenstone, ÐŸÑÑÑÐµÑÑÐ²Ð»ÑÐµÑÑÑ Ð² ÐœÐ°ÑÑÐŸÑÑÐµÐµ Ð²ÑÐµÐŒÑ. Ð¡ÑÐ°ÐœÐŽÐ°ÑÑÐœÑÐµ  Greenstone (Greenstone 2) ÐŸÑÑÐ°ÑÑÑÑ Ð»ÑÑÑÐžÐŒ Ð²ÑÐ±ÐŸÑÐŸÐŒ ÐŽÐ»Ñ Ð¿ÐŸÑÑÐž Ð²ÑÐµÑ
+ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÐµÐ¹. Greenstone 3 ÐŸÐ±ÑÐ»ÑÐ¶Ð°Ñ ÑÑÑÐµÑÑÐ²ÑÑÑÐžÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Ð±ÐµÐ· ÐºÐŸÐ³ÐŸ-Ð»ÐžÐ±ÐŸ ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ Ð²ÐŸÐŸÐ±ÑÐµ, ÑÐ°Ðº ÑÑÐŸ ÐœÐµÑ ÐœÐžÐºÐ°ÐºÐŸÐ¹ ÐŸÐ¿Ð°ÑÐœÐŸÑÑÐž ÐµÐ³ÐŸ ÑÑÐ°ÑÐµÐœÐžÑ, Ð¿ÑÐŸÐŽÐŸÐ»Ð¶Ð°Ñ Ñ Greenstone 2. <a href="http://www.greenstone.org/greenstone3.html">Greenstone 3 home page</a>.}
+
+_survey_ [l=ru] {Ð¥ÐŸÑÑ ÐŽÐµÐŽÐ»Ð°Ð¹Ðœ ÑÐ¶Ðµ Ð¿ÑÐŸÑÐµÐ», ÐÑ Ð²ÑÐµ ÐµÑÐµ ÑÐŒÐŸÐ³Ð»Ðž Ð±Ñ ÐœÐ°ÐŒ Ð¿ÐŸÐŒÐŸÑÑ, Ð·Ð°Ð¿ÐŸÐ»ÐœÐžÐ² Ð°ÐœÐºÐµÑÑ <a href="_surveylink_">ÐŸÐ±ÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÑ Ð¿ÐŸÑÑÐµÐ±ÐžÑÐµÐ»ÐµÐ¹</a>. Ð ÐµÐ·ÑÐ»ÑÑÐ°ÑÑ ÐŸÐ±ÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÑ Ð±ÑÐŽÑÑ Ð²ÑÐºÐŸÑÐµ Ð·ÐŽÐµÑÑ ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÑ.
+}
+
+_t4_ [l=ru] {<a href="http://sourceforge.net/projects/greenstone/"> ÐÐ°Ð³ÑÑÐ·ÐžÑÑ </a> Greenstone v2.41. ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÑÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ Greenstone (ÐÐÐ), Ð»ÐµÐ³ÐºÐŸÐµ Ð² ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐž ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐµ ÑÑÐµÐŽÑÑÐ²ÐŸ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Greenstone, Ð±ÑÐ» ÐžÐœÑÐµÐœÑÐžÐ²ÐœÐŸ Ð¿ÑÐŸÑÐµÑÑÐžÑÐŸÐ²Ð°Ðœ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÑÐŒÐž Ðž ÐŸÑÐ»Ð°Ð¶ÐµÐœ. ÐÑÐ»Ðž ÐÑ ÐµÑÐµ ÐœÐµ Ð¿ÑÐŸÐ±ÐŸÐ²Ð°Ð»Ðž ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÐµÐ³ÐŸ, ÑÐµÐ¹ÑÐ°Ñ ÑÐ°ÐŒÐŸÐµ Ð²ÑÐµÐŒÑ ÑÐŽÐµÐ»Ð°ÑÑ ÑÑÐŸ (Ð° ÐµÑÐ»Ðž ÐŽÐŸ ÑÐŸÐ³ÐŸ Ñ ÐÐ°Ñ Ð²ÐŸÐ·ÐœÐžÐºÐ°Ð»Ðž Ð¿ÑÐŸÐ±Ð»ÐµÐŒÑ, Ð¿ÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, Ð¿ÐŸÐ¿ÑÐŸÐ±ÑÐ¹ÑÐµ ÑÑÑ ÐœÐŸÐ²ÑÑ Ð²ÐµÑÑÐžÑ). Greenstone 2.41 ÑÐ°ÐºÐ¶Ðµ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÐœÐŸÐ²ÑÐ¹ Ð¿Ð»Ð°Ð³ÐžÐœ ÐŽÐ»Ñ ÐŸÐ±ÑÐ°Ð±ÐŸÑÐºÐž Ð±Ð°Ð· ÐŽÐ°ÐœÐœÑÑ
+ CDS/ISIS, Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÑÐºÑÐ¿ÐŸÑÑÐ° ÑÐŸÑÑÐ°Ð²ÐœÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÐœÐ°  CD-ROM Ðž ÐŒÐœÐŸÐ³ÐŸ ÐŽÑÑÐ³ÐžÑ
+ ÐžÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐœÑÑ
+ ÐŸÑÐžÐ±ÐŸÐº Ðž ÑÐ»ÑÑÑÐµÐœÐžÐ¹.
+}
+
+_t5_ [l=ru] {ÐÐŽÐœÐ° ÐžÐ· ÐœÐ°ÐžÐ±ÐŸÐ»ÐµÐµ ÐŸÑÑÑÐŸÑÐŒÐœÑÑ
+ ÑÐ°ÑÑÐµÐ¹ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ Greenstone ÑÐŸÑÑÐŸÐžÑ  Ð²  ÐºÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÐŸÐŒ ÑÐ°Ð¹Ð»Ðµ  ÐŽÐ»Ñ ÐÐ°ÑÐµÐ¹ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž. ÐÐ»Ñ ÑÐŸÐ³ÐŸ ÑÑÐŸÐ±Ñ Ð¿ÐŸÐŒÐŸÑÑ ÑÐ·ÐœÐ°ÑÑ, ÐºÐ°Ðº ÑÐŽÐµÐ»Ð°ÑÑ ÐµÐ³ÐŸ, ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ Ð¿ÑÐžÐŒÐµÑÐŸÐ² Ð¿ÐŸÐ»ÐœÐŸÐŽÐŸÐºÑÐŒÐµÐœÑÐžÑÐŸÐ²Ð°ÐœÐœÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ð±ÑÐ»ÐŸ Ð¿ÐŸÐŒÐµÑÐµÐœÐŸ Ð² <a href="http://nzdl.org">nzdl.org</a>, ÐºÐŸÑÐŸÑÑÐµ  ÐŸÐ±ÑÑÑÐœÑÑÑ ÐœÐ° Ð±Ð°Ð·ÐŸÐ²ÐŸÐ¹ ÑÑÑÐ°ÐœÐžÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÐºÐ°Ðº ÐŸÐœÐž Ð±ÑÐ»Ðž ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÑ.
+}
+
+_t6_ [l=ru] {ÐÐŸÐ»ÐœÑÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ Greenstone Ðž Ð²ÑÑ ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÑÐ²Ð»ÑÑÑÑÑ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒÐž ÐœÐ° <b>Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ</b>, <b>ÑÑÐ°ÐœÑÑÐ·ÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ</b>, <b>ÐžÑÐ¿Ð°ÐœÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ</b>, <b>ÑÑÑÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ </b> Ðž </b>ÐºÐ°Ð·Ð°Ñ
+ÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ</b>. Greenstone ÑÐ°ÐºÐ¶Ðµ ÐžÐŒÐµÐµÑ ÐžÐœÑÐµÑÑÐµÐ¹Ñ ÐœÐ° ÐŒÐœÐŸÐ³ÐžÑ
+ <a
+href="_httpwikiintn_">ÐŽÑÑÐ³ÐžÑ
+ ÑÐ·ÑÐºÐ°Ñ
+</a>. ÐÑ ÐžÑÐµÐŒ <a href="_httpwikiintnmaintainers_">Ð²ÐŸÐ»ÐŸÐœÑÐµÑÐŸÐ²</a>ÑÑÐŸÐ±Ñ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÐœÐŸÐ²ÑÐµ ÑÐ·ÑÐºÐŸÐ²ÑÐµ ÐžÐœÑÐµÑÑÐµÐ¹ÑÑ Ðž Ð¿ÐŸÐŒÐŸÑÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÑÑ ÑÑÑÐµÑÑÐ²ÑÑÑÐžÐµ.}
+
+_t7_ [l=ru] {ÐŠÐµÐ»ÑÑ ÑÑÐŸÐ³ÐŸ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÑÐ²Ð»ÑÐµÑÑÑ Ð¿ÑÐµÐŽÐŸÑÑÐ°Ð²Ð»ÐµÐœÐžÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÑÐŒ, ÐŸÑÐŸÐ±ÐµÐœÐœÐŸ Ð² ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ°Ñ
+, Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°Ñ
+ Ðž ÐŽÑÑÐ³ÐžÑ
+ ÐžÐœÑÑÐžÑÑÑÐ°Ñ
+ Ð¿ÑÐ±Ð»ÐžÑÐœÐŸÐ³ÐŸ ÐŸÐ±ÑÐ»ÑÐ¶ÐžÐ²Ð°ÐœÐžÑ, ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÑÐ²ÐŸÐžÑ
+ ÑÐŸÐ±ÑÑÐ²ÐµÐœÐœÑÑ
+ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº. ÐŠÐžÑÑÐŸÐ²ÑÐµ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐºÐ°ÑÐŽÐžÐœÐ°Ð»ÑÐœÐŸ Ð¿ÑÐµÐŸÐ±ÑÐ°Ð·ÑÑÑ ÑÐ°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÐµÐœÐžÐµ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž Ð¿ÑÐžÐŸÐ±ÑÐµÑÐ°ÑÑ Ð² Ð®ÐÐÐ¡ÐÐ Ð¿Ð°ÑÑÐœÐµÑÑÐºÐžÐµ ÑÐ²ÑÐ·Ðž Ñ ÐžÐœÑÑÐžÑÑÑÐ°ÐŒÐž Ð² ÐŸÐ±Ð»Ð°ÑÑÐž ÐŸÐ±ÑÐ°Ð·ÐŸÐ²Ð°ÐœÐžÑ, ÐœÐ°ÑÐºÐž Ðž ÐºÑÐ»ÑÑÑÑÑ Ð¿ÐŸ Ð²ÑÐµÐŒÑ ÐŒÐžÑÑ, ÐŸÑÐŸÐ±ÐµÐœÐœÐŸ Ð² ÑÐ°Ð·Ð²ÐžÐ²Ð°ÑÑÐžÑ
+ÑÑ ÑÑÑÐ°ÐœÐ°Ñ
+. ÐÑ ÐœÐ°ÐŽÐµÐµÐŒÑÑ, ÑÑÐŸ ÑÑÐŸÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÑÐ¹ Ð¿ÑÐŸÐŽÑÐºÑ Ð±ÑÐŽÐµÑ ÑÐ¿ÐŸÑÐŸÐ±ÑÑÐ²ÐŸÐ²Ð°ÑÑ ÑÑÑÐµÐºÑÐžÐ²ÐœÐŸÐŒÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº Ð² ÑÐŸÐ²ÐŒÐµÑÑÐœÐŸÐŒ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž ÑÐ°Ð·ÐŒÐµÑÐµÐœÐžÑ ÐµÐµ Ð² ÐŸÐ±ÑÐµÐŽÐŸÑÑÑÐ¿ÐœÐŸÐ¹ ÑÑÐµÑÐµ ÐŽÐµÐ¹ÑÑÐ²ÐžÑ. ÐÐ°Ð»ÑÐœÐµÐ¹ÑÑÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŒÐŸÐ¶ÐœÐŸ ÐœÐ°Ð¹ÑÐž Ð² ÐºÐœÐžÐ³Ðµ, Ð¿ÐŸÐŽÐ³ÐŸÑÐŸÐ²Ð»ÐµÐœÐœÐŸÐ¹ ÐŽÐ²ÑÐŒÑ Ð°Ð²ÑÐŸÑÐ°ÐŒÐž  ÐžÐ· Ð³ÑÑÐ¿Ð¿Ñ ÑÐ»ÐµÐœÐŸÐ² Ð¿ÑÐŸÐµÐºÑÐ° <a href="http://www.nzdl.org/howto">ÐÐ°Ðº ÑÐŸÐ·ÐŽÐ°ÑÑ ÑÐžÑÑÐŸÐ²ÑÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÑ</a>.}
+
+_t8_ [l=ru] {Ð€Ð°Ð¹Ð»Ñ Ñollect.cfg ÐŽÐ»Ñ ÐŒÐœÐŸÐ³ÐžÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ð² <a href="http://www.nzdl.org">www.nzdl.org</a> Ð±ÑÐ»Ðž ÑÐŽÐµÐ»Ð°ÐœÑ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒÐž <a href="_httpwikicolcfg_">Ð·ÐŽÐµÑÑ</a>.}
+
+_t9_ [l=ru] {Ð­ÑÐŸ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ Ð±ÑÐ»ÐŸ ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐ°ÐœÐŸ Ðž ÑÐ°ÑÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐŸ ÐºÐ°Ðº ÑÐŸÐ²ÐŒÐµÑÑÐœÐŸÐµ ÐŒÐµÐ¶ÐŽÑÐœÐ°ÑÐŸÐŽÐœÐŸÐµ 
+ÐŽÐµÐ¹ÑÑÐ²ÐžÐµ, ÐŸÑÐœÐŸÐ²Ð°ÐœÐœÐŸÐµ Ð² Ð°Ð²Ð³ÑÑÑÐµ 2000 Ð³ÐŸÐŽÐ° ÑÑÐµÐŒÑ ÑÑÐŸÑÐŸÐœÐ°ÐŒÐž.}
+
+_t10_ [l=ru] {ÐÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐžÐ¹ Ð¿ÑÐŸÐµÐºÑ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ° ÐÐ°Ð¹ÐºÐ°ÑÐŸ.}
+
+_t11_ [l=ru] {ÐÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ Greenstone Ð²ÑÑÐŸÑÐ»ÐŸ ÐžÐ· ÑÑÐŸÐ³ÐŸ Ð¿ÑÐŸÐµÐºÑÐ°, Ðž ÑÑÐ° ÐžÐœÐžÑÐžÐ°ÑÐžÐ²Ð° Ð±ÑÐ»Ð°
+Ð¿ÐŸÐŽÐŽÐµÑÐ¶Ð°ÐœÐ° ÐÐŸÐŽÐºÐŸÐŒÐžÑÑÐžÐµÐ¹ Ð¿ÐŸ ÑÐ²ÑÐ·Ðž ÐÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐŸÐ¹ ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ¹ ÐÐŸÐŒÐžÑÑÐžÐž Ð®ÐÐÐ¡ÐÐ ÐºÐ°Ðº ÑÐ°ÑÑÑ Ð²ÐºÐ»Ð°ÐŽÐ° ÐÐŸÐ²ÐŸÐ¹ ÐÐµÐ»Ð°ÐœÐŽÐžÐž Ð² Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ Ð®ÐÐÐ¡ÐÐ
+}
+
+_t12_ [l=ru] {ÐÐ±ÑÐ°Ð·ÐŸÐ²Ð°ÑÐµÐ»ÑÐœÐ°Ñ, ÐÐ°ÑÑÐœÐ°Ñ Ðž ÐÑÐ»ÑÑÑÑÐœÐ°Ñ ÐÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑ ÐÐÐ}
+
+_t13_ [l=ru] {Ð Ð°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÐµÐœÐžÐµ ÐŸÐ±ÑÐ°Ð·ÐŸÐ²Ð°ÑÐµÐ»ÑÐœÐŸÐ¹, ÐœÐ°ÑÑÐœÐŸÐ¹ Ðž ÐºÑÐ»ÑÑÑÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž
+Ð²ÐŸ Ð²ÑÐµÐŒ ÐŒÐžÑÐµ, Ðž ÐŸÑÐŸÐ±ÐµÐœÐœÐŸ ÐµÐµ Ð¿ÑÐžÐ³ÐŸÐŽÐœÐŸÑÑÑ ÐŽÐ»Ñ ÑÐ°Ð·Ð²ÐžÐ²Ð°ÑÑÐžÑ
+ÑÑ ÑÑÑÐ°Ðœ
+ÑÐ²Ð»ÑÑÑÑÑ ÑÐµÐœÑÑÐ°Ð»ÑÐœÑÐŒÐž ÑÐµÐ»ÑÐŒÐž Ð®ÐÐÐ¡ÐÐ, ÐŸÑÑÑÐµÑÑÐ²Ð»ÑÐµÐŒÐŸÐ¹ Ð² ÑÐ°ÐŒÐºÐ°Ñ
+
+ÐŒÐµÐ¶Ð¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž ÐŽÐ»Ñ Ð²ÑÐµÑ
+ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒ Ðž ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑÐµÐ¹
+ÐŽÐŸÑÑÑÐ¿ÐœÐŸÑÑÐž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž ÐºÐŸÐŒÐŒÑÐœÐžÐºÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÑÐµÑ
+ÐœÐŸÐ»ÐŸÐ³ÐžÐž ÑÐ²Ð»ÑÐµÑÑÑ Ð²Ð°Ð¶ÐœÑÐŒ
+ÐžÐœÑÑÑÑÐŒÐµÐœÑÐŸÐŒ Ð² ÑÑÐŸÐŒ ÐºÐŸÐœÑÐµÐºÑÑÐµ.}
+
+_t14_ [l=ru] {ÐÐµÐ¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÐ°Ñ ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑ Ð³ÑÐŒÐ°ÐœÐžÑÐ°ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž, Ð±Ð°Ð·ÐžÑÑÑÑÐ°ÑÑÑ Ð² ÐÐœÑÐ²ÐµÑÐ¿ÐµÐœÐµ (ÐÐµÐ»ÑÐ³ÐžÑ).}
+
+_t15_ [l=ru] {Ð­ÑÐŸÑ Ð¿ÑÐŸÐµÐºÑ ÑÐŸÑÑÑÐŽÐœÐžÑÐ°ÐµÑ Ñ Ð°Ð³ÐµÐœÑÑÑÐ²Ð°ÐŒÐž ÐÐÐ Ðž ÐŽÑÑÐ³ÐžÐŒÐž ÐœÐµÐ¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÑÐŒÐž ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑÐŒÐž.ÐÐœ Ð¿ÐŸÐ»ÑÑÐžÐ» ÐŒÐžÑÐŸÐ²ÑÑ ÑÐµÐ¿ÑÑÐ°ÑÐžÑ Ð² ÐŽÐµÐ»Ðµ ÐŸÑÐžÑÑÐŸÐ²ÐºÐž ÐŽÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÐž, Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÑÑÑÐµÐ¹ ÐžÐœÑÐµÑÐµÑ ÐŽÐ»Ñ Ð³ÑÐŒÐ°ÐœÐžÑÐ°ÑÐœÐŸÐ³ÐŸ ÑÐ°Ð·Ð²ÐžÑÐžÑ, ÐŽÐµÐ»Ð°Ñ ÐµÐ³ÐŸ ÑÐžÑÐŸÐºÐŸ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒ, Ð±ÐµÑÐ¿Ð»Ð°ÑÐœÑÐŒ ÐŽÐ»Ñ ÐœÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ³ÐŸ ÑÐ°Ð·Ð²ÐžÑÐžÑ Ðž ÐœÐ° ÐŸÑÐœÐŸÐ²Ð°ÐœÐžÐž Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÑ Ð·Ð°ÑÑÐ°Ñ ÐŽÐ»Ñ ÐŽÑÑÐ³ÐžÑ
+.}
+
+_t16_ [l=ru] {ÐÑÐ»Ðž ÐÑ Ð·Ð°Ð³ÑÑÐ¶Ð°ÐµÑÐµ Greenstone Ðž ÐžÐœÑÑÐ°Ð»Ð»ÐžÑÑÐµÑÐµ ÐµÐ³ÐŸ ÑÐŸ ÑÑÐ°ÐœÐŽÐ°ÑÑÐœÑÐŒÐž ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐŒÐž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑÐŒÐž ÐžÐ»Ðž ÐžÐœÑÑÐ°Ð»Ð»ÐžÑÑÐµÑÐµ ÐµÐ³ÐŸ Ñ CD-ROM Greenstone, ÐŸÐœ Ð±ÑÐŽÐµÑ Ð²ÑÐ³Ð»ÑÐŽÐµÑÑ Ð² ÑÐŸÑÐœÐŸÑÑÐž ÐºÐ°Ðº
+<a href="http://www.nzdl.org/cgi-bin/democols/library">ÑÑÐŸ</a>.}
+
+#######################################################################
+package docs
+
+_t80_ [l=ru] {ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ Greenstone.}
+
+#######################################################################
+
+package download
+
+_t18_ [l=ru] {ÐÐ°Ð³ÑÑÐ·ÐºÐ° Greenstone.}
+
+_t19_ [l=ru] {Greenstone ÑÐ²Ð»ÑÐµÑÑÑ ÑÐ²ÐŸÐ±ÐŸÐŽÐœÐŸ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÑÐŒ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµÐŒ, ÑÐ°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÑÐµÐŒÑÐŒ Ð² ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÐžÐž Ñ <a href="http://www.gnu.org/copyleft/gpl.html">ÐÐ±ÑÐµÐŽÐŸÑÑÑÐ¿ÐœÐ°Ñ Ð»ÐžÑÐµÐœÐ·ÐžÑ</a>. ÐÐœÐŸ Ð²ÑÐ¿ÐŸÐ»ÐœÐµÐœÐŸ ÐœÐ° Windows Ðž Unix, Ðž ÐŸÐ±Ðµ - ÐžÑÑ
+ÐŸÐŽÐœÐ°Ñ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° Ðž Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ - ÑÐ²Ð»ÑÑÑÑÑ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒÐž ÐŽÐ»Ñ Ð·Ð°Ð³ÑÑÐ·ÐºÐž. ÐÐœÐŸ Ð¿ÐŸÐ»ÐœÐŸÑÑÑÑ ÐŽÐŸÐºÑÐŒÐµÐœÑÐžÑÐŸÐ²Ð°ÐœÐŸ ÐœÐ° Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐŒ, ÑÑÐ°ÐœÑÑÐ·ÑÐºÐŸÐŒ, ÐžÑÐ¿Ð°ÐœÑÐºÐŸÐŒ Ðž ÑÑÑÑÐºÐŸÐŒ ÑÐ·ÑÐºÐ°Ñ
+.}
+
+_t20_ [l=ru] {ÐÑÐ±ÐµÑÐžÑÐµ ÑÑÐµÐ±ÑÐµÐŒÑÐ¹ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² Greenstone ÐžÐ· ÑÐ¿ÐžÑÐºÐ°, Ð¿ÑÐžÐ²ÐµÐŽÐµÐœÐœÐŸÐ³ÐŸ ÐœÐžÐ¶Ðµ. ÐÐ°Ð¶ÐŽÑÐ¹
+Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ Ð¿ÐŸÐ»ÐœÑÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ ÐœÐ° Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐŒ, ÑÑÐ°ÐœÑÑÐ·ÑÐºÐŸÐŒ, ÐžÑÐ¿Ð°ÐœÑÐºÐŸÐŒ Ðž
+ÑÑÑÑÐºÐŸÐŒ ÑÐ·ÑÐºÐ°Ñ
+.}
+
+_t21_ [l=ru] {ÐÐ°Ð¶ÐŽÑÐ¹ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÑÐ°ÐºÐ¶Ðµ Ð²ÐºÐ»ÑÑÐ°ÐµÑ "ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÑÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ Greenstone", Ð³ÑÐ°ÑÐžÑÐµÑÐºÐŸÐµ ÑÑÐµÐŽÑÑÐ²ÐŸ ÐŽÐ»Ñ Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº. Ð­ÑÐŸ Ð¿ÑÐµÐŽÐŸÑÑÐ°Ð²Ð»ÑÐµÑ ÐÐ°ÐŒ ÐŽÐŸÑÑÑÐ¿ Ðº ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐŒ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑÐŒ Greenstone Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÑÐŽÐŸÐ±ÐœÐŸÐ³ÐŸ Ð² ÑÐ°Ð±ÐŸÑÐµ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ° "ÑÐºÐ°Ð¶Ðž Ðž ÑÐµÐ»ÐºÐœÐž". Ð§ÑÐŸÐ±Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÑÑÐŸÑ ÐžÐœÑÑÑÑÐŒÐµÐœÑ, ÐÐ°ÐŒ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐ° Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐ°Ñ Ð²ÐµÑÑÐžÑ Java Run-time Environment, ÐºÐŸÑÐŸÑÑÑ ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð·Ð°Ð³ÑÑÐ·ÐžÑÑ Ñ ÑÐ°Ð¹ÑÐ° <a href="http://java.sun.com/j2se/">, Ð³ÐŽÐµ Ð¿ÐŸÑÐ»ÐµÐŽÐœÑÑ Ð²ÐµÑÑÐžÑ Ð² ÐœÐ°ÑÑÐŸÑÑÐµÐµ Ð²ÑÐµÐŒÑ 1.4.2 (Ð·Ð°ÑÐµÐŒ ÐœÐ°ÐŽÐŸ Ð²ÑÐ±ÑÐ°ÑÑ JRE, Ð° ÐœÐµ SDK).}
+
+_t22_ [l=ru] {ÐÐžÑÑÑÐžÐ±ÑÑÐžÐ² Windows}
+
+_t23_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ², ÐºÐŸÑÐŸÑÑÐ¹ ÐÐ°ÐŒ Ð¿ÐŸÐœÐ°ÐŽÐŸÐ±ÐžÑÑÑ, ÐµÑÐ»Ðž ÐÑ ÑÐŸÐ±ÐžÑÐ°ÐµÑÐµÑÑ Ð·Ð°Ð³ÑÑÐ¶Ð°ÑÑ Greenstone Ñ Ð¿ÐŸÐŒÐŸÑÑÑ Ð»ÑÐ±ÐŸÐ³ÐŸ 32-Ð±ÐžÑÐœÐŸÐ³ÐŸ Windows (ÑÐŸ ÐµÑÑÑ Windows 95/98/Me/NT/2000/XP Ðž Ñ.ÐŽ.).}
+
+_t24_ [l=ru] {ÐÐ±ÑÐ°ÑÐžÑÐµ Ð²ÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÑÐŸ Greenstone Ð±ÑÐŽÐµÑ ÑÐ°ÐºÐ¶Ðµ Ð·Ð°Ð³ÑÑÐ¶Ð°ÑÑÑÑ Ðž Ñ Ð¿ÐŸÐŒÐŸÑÑÑ 16-Ð±ÐžÑÐœÐŸÐ³ÐŸ Windows (ÑÐŸ ÐµÑÑÑ Windows 3.1/3.11). ÐÑÐŸÐ³ÑÐ°ÐŒÐŒÐ° ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÐ°Ñ ÑÑÐžÐŒ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²ÐŸÐŒ, ÐŸÐŽÐœÐ°ÐºÐŸ, ÐœÐµ Ð±ÑÐŽÐµÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ ÐœÐ° ÑÑÐžÑ
+ Ð²ÐµÑÑÐžÑÑ
+ Windows. ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ°, ÐŸÐ±ÑÐ°ÑÐžÑÐµÑÑ Ðº ÐœÐ°ÐŒ <a href="_httppagex_(support)">ÐºÐŸÐœÑÐ°ÐºÑÐžÑÑÐ¹ÑÐµ Ñ ÐœÐ°ÐŒÐž</a>, ÐµÑÐ»Ðž ÐÑ ÐœÑÐ¶ÐŽÐ°ÐµÑÐµÑÑ Ð² Ð²ÐµÑÑÐžÐž Greenstone Ð¿ÐŸÐŽ 16-Ð±ÐžÑÐœÑÐŒ Windows.
+}
+
+_t25_ [l=ru] {ÐÑÐ¿ÐŸÐ»ÑÐ·ÑÑ ÑÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ², ÐÑ ÑÐŒÐŸÐ¶ÐµÑÐµ ÐžÐ»Ðž ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ "Ð»ÐŸÐºÐ°Ð»ÑÐœÑÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÑ", "Ð²ÐµÐ±-Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÑ", ÐžÐ»Ðž ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Ðž ÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°ÑÑ ÐžÑÑ
+ÐŸÐŽÐœÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ (ÑÐµÐ»ÐºÐœÐžÑÐµ <a href="_httpwikilocallibrary_">Ð·ÐŽÐµÑÑ</a> ÐŽÐ»Ñ ÐŸÐ¿ÐžÑÐ°ÐœÐžÑ ÑÐ°Ð·Ð»ÐžÑÐžÐ¹ ÐŒÐµÐ¶ÐŽÑ "Ð»ÐŸÐºÐ°Ð»ÑÐœÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ¹" Ðž
+"Ð²ÐµÐ±-Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ¹").  Ð Ð¿ÑÐŸÑÐµÑÑÐµ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÐÐ°ÐŒ Ð±ÑÐŽÑÑ Ð·Ð°ÐŽÐ°ÐœÑ Ð²ÐŸÐ¿ÑÐŸÑÑ ÐŸ ÑÐŸÐŒ, ÐºÐ°ÐºÐŸÐ¹ Ð²ÐžÐŽ Greenstone Ð²Ñ Ð¶ÐµÐ»Ð°ÐµÑÐµ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ.}
+
+_t26_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð²ÑÐµ, Ð² ÑÐµÐŒ ÐÑ ÐœÑÐ¶ÐŽÐ°ÐµÑÐµÑÑ ÐŽÐ»Ñ Ð·Ð°Ð³ÑÑÐ·ÐºÐž Greenstone (Ð²ÐºÐ»ÑÑÐ°Ñ
+Ð·Ð°ÑÐ°ÐœÐµÐµ ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐµ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž) Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐœÐŸÐ²ÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Greenstone. ÐÐŽÐœÐ°ÐºÐŸ, ÐœÐµÐºÐŸÑÐŸÑÑÐµ ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž ÐœÐµ Ð²ÐºÐ»ÑÑÐµÐœÑ Ð³Ð»Ð°Ð²ÐœÑÐŒ ÐŸÐ±ÑÐ°Ð·ÐŸÐŒ ÐžÐ·-Ð·Ð° Ð¶ÐµÐ»Ð°ÐœÐžÑ Ñ
+ÑÐ°ÐœÐžÑÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÐºÐ°Ðº ÐŒÐŸÐ¶ÐœÐŸ ÐŒÐµÐœÑÑÐžÐŒ Ð¿ÐŸ ÑÐ°Ð·ÐŒÐµÑÑ. Ð¡ÐŒ. <a href="#packages">ÐœÐžÐ¶Ðµ</a> ÐŽÐ»Ñ ÐŽÐµÑÐ°Ð»ÐµÐ¹ ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ³ÐŸ, ÐºÐ°Ðº Ð¿ÐŸÐ»ÑÑÐžÑÑ ÑÑÐž ÐŸÑÑÑÑÑÑÐ²ÑÑÑÐžÐµ ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž.}
+
+_t27_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ ÑÑÐ°ÐœÐŽÐ°ÑÑÐœÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž Windows. ÐÑÐŸÑÑÐŸ
+Ð·Ð°Ð³ÑÑÐ·ÐžÑÐµ ÑÑÐŸÑ ÑÐ°Ð¹Ð» Ðž ÑÐµÐ»ÐºÐœÐžÑÐµ ÐŽÐ²Ð° ÑÐ°Ð·Ð° Ð¿ÐŸ ÐœÐµÐŒÑ, ÑÑÐŸÐ±Ñ ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ (ÑÐŒ. <a href="_httpguide_(Install,en)">Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž</a> Ð±ÐŸÐ»ÐµÐµ ÐŽÐµÑÐ°Ð»ÑÐœÑÐµ ÐžÐœÑÑÐ°Ð»ÑÑÐžÐŸÐœÐœÑÐµ ÐžÐœÑÑÑÑÐºÑÐžÐž).}
+
+_t28_ [l=ru] {ÐÐžÑÑÑÐžÐ±ÑÑÐžÐ² Unix}
+
+_t29_ [l=ru] {Ð­ÑÐŸ - ÑÐµÐºÐŸÐŒÐµÐœÐŽÐŸÐ²Ð°ÐœÐœÑÐ¹ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ², ÐµÑÐ»Ðž ÐÑ ÑÑÑÐ°ÐœÐ°Ð²Ð»ÐžÐ²Ð°ÐµÑÐµ Greenstone  ÐœÐ° Ð»ÑÐ±ÐŸÐŒ
+Ð²ÐžÐŽÐµ Unix.}
+
+_t30_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÐžÐŽÐµÑ ÑÐŸ ÑÑÐ°ÑÐžÑÐµÑÐºÐž ÑÐ²ÑÐ·Ð°ÐœÐœÑÐŒ Ð±ÐžÐœÐ°ÑÐœÑÐŒ linux.ÐÐŽÐœÐ°ÐºÐŸ, ÐŸÐœ  ÑÐ°ÐºÐ¶Ðµ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐžÑÑ
+ÐŸÐŽÐœÑÐµ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒ Greenstone ÐŽÐ»Ñ ÑÐŸÐ³ÐŸ, ÑÑÐŸÐ±Ñ ÐžÐŒÐµÑÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐºÐŸÐŒÐ¿ÐžÐ»ÐžÑÐŸÐ²Ð°ÐœÐžÑ ÐœÐ° ÐŽÑÑÐ³ÐžÑ
+ ÑÐŸÑÐŒÐ°Ñ
+ Unix (ÐžÐ»Ðž ÐœÐ° linux, ÐµÑÐ»Ðž ÐÑ Ð¿ÑÐµÐŽÐ¿ÐŸÑÐžÑÐ°ÐµÑÐµ ÐœÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð¿ÑÐµÐŽÐ»Ð°Ð³Ð°ÐµÐŒÑÐµ Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ).}
+
+_t31_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð²ÑÐµ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸÐµ ÐŽÐ»Ñ Ð·Ð°Ð³ÑÑÐ·ÐºÐž Greenstone, Ð²ÐºÐ»ÑÑÐ°Ñ
+Ð¿ÑÐµÐŽÐ²Ð°ÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐµ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, Ðž ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐœÐŸÐ²ÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Greenstone. ÐÐµÐºÐŸÑÐŸÑÑÐµ ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž, ÐŸÐŽÐœÐ°ÐºÐŸ, ÐŸÑÑÑÑÑÑÐ²ÑÑÑ Ð³Ð»Ð°Ð²ÐœÑÐŒ ÐŸÐ±ÑÐ°Ð·ÐŸÐŒ ÐžÐ· Ð¶ÐµÐ»Ð°ÐœÐžÑ Ñ
+ÑÐ°ÐœÐžÑÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÐºÐ°Ðº ÐŒÐŸÐ¶ÐœÐŸ ÐŒÐµÐœÑÑÐžÐŒ. Ð¡ÐŒ. <a href="#packages">ÐœÐžÐ¶Ðµ</a>
+ÐŽÐ»Ñ ÐŽÐµÑÐ°Ð»ÐµÐ¹ ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ³ÐŸ, ÐºÐ°Ðº Ð¿ÐŸÐ»ÑÑÐžÑÑ ÑÑÐž ÐŸÑÑÑÑÑÑÐ²ÑÑÑÐžÐµ  ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž.}
+
+_t32_ [l=ru] {ÐÐ»Ñ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž ÑÑÐŸÐ³ÐŸ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²Ð° ÐžÐ·Ð²Ð»ÐµÐºÐžÑÐµ gzipped tar archive Ðž Ð·Ð°Ð³ÑÑÐ·ÐžÑÐµ 
+<i>Install.sh</i>ÐŸÐ±ÐŸÐ»ÐŸÑÐºÐ° ÑÐºÑÐžÐ¿ÑÐ° Ð²<i>gsdl-X.XX-unix/Unix</i>ÐŽÐžÑÐµÐºÑÐŸÑÐžÐž
+(ÑÐŒ. <a href="_httpguide_(Install,en)">Ð ÑÐºÐŸÐ²ÐŸÐŽÑÑÐ²ÐŸ Ð¿ÐŸ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž</a> ÐŽÐ»Ñ
+Ð±ÐŸÐ»ÐµÐµ ÐŽÐµÑÐ°Ð»ÑÐœÑÑ
+ ÐžÐœÑÑÐ°Ð»ÑÑÐžÐŸÐœÐœÑÑ
+ ÐžÐœÑÑÑÑÐºÑÐžÐ¹).}
+
+_t33_ [l=ru] {ÐÐžÑÑÑÐžÐ±ÑÑÐžÐ² Mac OS X}
+
+_t34_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐŽÐžÐœÐ°ÐŒÐžÑÐµÑÐºÐž ÑÐ²ÑÐ·Ð°ÐœÐœÑÐµ Ð±ÐžÐœÐ°ÑÐœÑÐµ ÐºÐŸÐŽÑ ÐŽÐ»Ñ Mac OS X, Ð·Ð°Ð³ÑÑÐ¶Ð°ÐµÐŒÐŸÐ³ÐŸ ÐœÐ° Ð¿Ð»Ð°ÑÑÐŸÑÐŒÐ°Ñ
+ PowerPC.}
+
+_t35_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² Ð±ÑÐ» Ð¿ÑÐŸÐ²ÐµÑÐµÐœ ÐœÐ° Mac OS X 10.2.6 Ðž 10.3.2. ÐÐœ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð¿ÑÐµÐŽÐ²Ð°ÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ±ÑÐ°ÐœÐœÑÐµ ÐžÑÐ¿ÐŸÐ»ÐœÑÐµÐŒÑÐµ ÑÐ°Ð¹Ð»Ñ, Ð° ÑÐ°ÐºÐ¶Ðµ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð² ÐœÐµÑÐŸÐ±ÑÐ°ÐœÐœÐŸÐŒ Ð²ÐžÐŽÐµ. Ð¢Ð°ÐºÐ¶Ðµ Ð² ÑÑÐŸÐŒ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²Ðµ ÑÐŸÐŽÐµÑÐ¶ÐžÑÑÑ ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÑÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ Greenstone ÐŽÐ»Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹}
+
+_t36_ [l=ru] {Ð¢ÐŸÐ»ÑÐºÐŸ ÐžÑÑ
+ÐŸÐŽÐœÑÐ¹ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ².}
+
+_t37_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐžÑÑ
+ÐŸÐŽÐœÑÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ Greenstone Ð²ÐŒÐµÑÑÐµ Ñ ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÐºÐŸÐ»ÐµÐºÑÐžÐµÐ¹,  ÐºÐ°Ðº Ðž ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²Ñ Ð²ÑÑÐµ (Ñ
+ÐŸÑÑ ÑÑÐ° ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐœÐµ Ð±ÑÐ»Ð° Ð¿ÑÐµÐŽÐ²Ð°ÑÐžÑÐµÐ»ÑÐœÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐ° Ð² ÐŽÐ°ÐœÐœÐŸÐŒ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²Ðµ).}
+
+_t38_ [l=ru] {Ð­ÑÐŸÑ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ² ÐœÐµ ÑÐ°ÑÐ¿ÐŸÐ»Ð°Ð³Ð°ÐµÑ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÐ·ÐžÑÐŸÐ²Ð°ÐœÐœÐŸÐ¹ Ð¿ÑÐŸÑÐµÐŽÑÑÑ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐž 
+(Ð·Ð°Ð³ÑÑÐ·ÐºÐ°<i>Install.sh</i>ÐœÐµ Ð±ÑÐŽÐµÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ). ÐÑÐ»Ðž ÐÑ ÐœÐµ ÑÐ²ÐµÑÐµÐœÑ, ÑÑÐŸ ÐÑ Ð·ÐœÐ°ÐµÑÐµ, ÑÑÐŸ ÐœÐ°ÐŽÐŸ ÐŽÐµÐ»Ð°ÑÑ, Ð²ÐµÑÐŸÑÑÐœÐŸ ÐÑ Ð·Ð°Ñ
+ÐŸÑÐžÑÐµ ÐžÐŒÐµÑÑ ÐŸÐŽÐžÐœ ÐžÐ· ÐŽÐ²ÑÑ
+ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²ÐŸÐ², ÑÐºÐ°Ð·Ð°ÐœÐœÑÑ
+ Ð²ÑÑÐµ, ÐºÐŸÑÐŸÑÑÐµ ÑÐ°ÐºÐ¶Ðµ ÑÐŸÐŽÐµÑÐ¶Ð°Ñ ÐžÑÑÐŸÑÐœÐžÐº Greenstone.ÐÐ±ÑÐ°ÑÐžÑÐµ Ð²ÐœÐžÐŒÐ°ÐœÐžÐµ, ÑÑÐŸ ÐÑ ÐŒÐŸÐ¶ÐµÑÐµ Ð¿ÐŸÐ»ÑÑÐžÑÑ ÑÐŸÐ²ÑÐµÐŒÐµÐœÐœÑÑ Ð²ÐµÑÑÐžÑ ÐžÑÑ
+ÐŸÐŽÐœÐŸÐ¹ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÑ Greenstone Ð² Ð»ÑÐ±ÐŸÐµ Ð²ÑÐµÐŒÑ, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÑ <a href ="_httpwiki_/Greenstone_CVS">cvs</a>.}
+
+_t39_ [l=ru] {Ð¡Ð»ÐµÐŽÑÑÑÐžÐµ ÐŽÐŸÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»ÑÐœÑÐµ Ð¿Ð°ÐºÐµÑÑ ÐŒÐŸÐ³ÑÑ Ð±ÑÑÑ Ð·Ð°Ð³ÑÑÐ¶ÐµÐœÑ Ðž ÐžÐœÑÑÐ°Ð»Ð»ÐžÑÐŸÐ²Ð°ÐœÑ ÐœÐ°ÑÑÐŽÑ Ñ ÑÑÑÐµÑÑÐ²ÑÑÑÐµÐ¹ ÑÑÑÐ°ÐœÐŸÐ²ÐºÐŸÐ¹ Greenstone ÐŽÐ»Ñ ÑÐŸÐ³ÐŸ, ÑÑÐŸÐ±Ñ ÐŽÐŸÐ±Ð°Ð²ÐžÑÑ ÑÑÐœÐºÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÐž, ÐºÐŸÑÐŸÑÑÐµ Ð±ÑÐ»Ðž ÑÐŽÐ°Ð»ÐµÐœÑ ÐžÐ· Ð²ÑÑÐµÐ¿ÑÐžÐ²ÐµÐŽÐµÐœÐœÑÑ
+ ÐŽÐžÑÑÑÐžÐ±ÑÑÐžÐ²ÐŸÐ².}
+
+_langpack_ [l=ru] {Ð¯Ð·ÑÐºÐŸÐ²ÐŸÐ¹ Ð¿Ð°ÐºÐµÑ ÐÑÐžÐœÑÑÐŸÑÐœ}
+
+_langpackdesc_ [l=ru] {Ð­ÑÐŸÑ Ð¿Ð°ÐºÐµÑ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐžÐœÑÐµÑÑÐµÐ¹ÑÑ Ðº ÐÑÐžÐœÑÑÐŸÑÐœÑ ÐœÐ° ÑÐ°Ð·Ð»ÐžÑÐœÑÑ
+ ÑÐ·ÑÐºÐ°Ñ
+; ÑÐŒÐŸÑÑÐž ÐŽÐµÑÐ°Ð»ÑÐœÐŸÐµ ÐŸÐ±ÑÑÑÐœÐµÐœÐžÐµ <a href="_httpwikiintn_">Ð·ÐŽÐµÑÑ</a>.
+}
+
+_t40_ [l=ru] {Ð­ÐºÑÐ¿ÐŸÑÑÐžÑÑÐ¹ÑÐµ Ð² Ð¿Ð°ÐºÐµÑ CD-ROM}
+
+_t41_ [l=ru] {Ð­ÑÐŸÑ Ð¿Ð°ÐºÐµÑ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÑÑÐœÐºÑÐžÑ "ÑÐºÑÐ¿ÐŸÑÑ Ð² CD-ROM" ÐžÐ· ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÐŸÐ³ÐŸ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ° Greenstone Ðž ÐÐŸÐ»Ð»ÐµÐºÑÐŸÑÐ° .
+}
+
+_t42_ [l=ru] {ÐÐ»Ñ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž Ð¿ÑÐŸÑÑÐŸ Ð·Ð°Ð³ÑÑÐ·ÐžÑÐµ ÑÐ°Ð¹Ð» (ÐŸÐœ Ð±ÑÐŽÐµÑ ÑÐ°Ð±ÐŸÑÐ°ÑÑ Ðž ÐœÐ° Windows, Ðž ÐœÐ° Unix,
+Ðž Ð¿ÑÐž Ð»ÑÐ±ÐŸÐ¹ Ð²ÐµÑÑÐžÐž Greenstone Ð²ÑÑÐµ, ÑÐµÐŒ 2.34) Ðž ÑÐ°ÑÐ¿Ð°ÐºÑÐ¹ÑÐµ zip-Ð°ÑÑ
+ÐžÐ² Ð² ÐŽÐžÑÐµÐºÑÐŸÑÐžÑ
+gsdl\\bin\\windows ÑÑÑÐµÑÑÐ²ÑÑÑÐµÐ¹ Ñ ÐÐ°Ñ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž Greenstone. }
+
+_t43_ [l=ru] {Ð¡Ð»ÐµÐŽÑÑÑÐžÐµ ÑÑÐžÐ»ÐžÑÑ Ð±ÑÐ»Ðž ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐ°ÐœÑ, ÑÑÐŸÐ±Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑÑÑ ÐžÑ
+ ÐœÐ°ÑÑÐŽÑ Ñ Greenstone .
+}
+
+_dllearningteachingmaterial_ [l=ru] {Ð¡Ð»ÐµÐŽÑÑÑÐžÐµ Ð¿Ð°ÐºÐµÑÑ ÐŽÐŸÐ»Ð¶ÐœÑ Ð¿ÐŸÐŒÐŸÑÑ Ð²Ð°ÐŒ ÐžÐ·ÑÑÐžÑÑ Ð±ÐŸÐ»ÑÑÐµ ÐŸ Greenstone Ðž Ð¿ÑÐµÐ¿ÐŸÐŽÐ°Ð²Ð°ÑÑ ÑÑÐŸ ÐŽÑÑÐ³ÐžÐŒ. }
+
+_dlteachingmaterialdesc_ [l=ru] {ÐÐ°ÐºÐµÑÑ ÐŒÐ°ÑÐµÑÐžÐ°Ð»Ð° Ð¿ÐŸÐŽÐ³ÐŸÑÐŸÐ²Ð»ÐµÐœÑ  Ðº ÑÐ°Ð·Ð»ÐžÑÐœÑÐŒ ÑÑÐµÐœÐžÐœÐ³Ð°ÐŒ Greenstone; ÑÐŒ. <a href="_httpwikiworkshops_">here</a>ÐŽÐ»Ñ ÐŽÐµÑÐ°Ð»ÐµÐ¹.}
+
+_t44_ [l=ru] {ÐÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐŸÑ}
+
+_t45_ [l=ru] {ÐÑÐ³Ð°ÐœÐ°Ð¹Ð·ÐµÑ ÑÐ²Ð»ÑÐµÑÑÑ Ð¿ÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÐµÐŒ Windows, Ð¿ÐŸÐ»ÐµÐ·ÐœÑÐŒ ÐŽÐ»Ñ Ð°Ð²ÑÐŸÐŒÐ°ÑÐžÑÐµÑÐºÐŸÐ³ÐŸ Ð³ÐµÐœÐµÑÐžÑÐŸÐ²Ð°ÐœÐžÑ ÐŒÐœÐŸÐ³ÐžÑ
+ ÐºÐŸÐœÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÑÑ
+ ÑÐ°Ð¹Ð»ÐŸÐ² (metadata.xml, sub.txt Ðž Ñ.ÐŽ.), ÑÑÐµÐ±ÑÐµÐŒÑÑ
+ ÐŽÐ»Ñ ÑÐ»ÐŸÐ¶ÐœÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Greenstone. 
+}
+
+_t46_ [l=ru] {ÐÐ»Ñ ÐžÐœÑÑÐ°Ð»Ð»ÑÑÐžÐž Ð¿ÑÐŸÑÑÐŸ Ð·Ð°Ð³ÑÑÐ·ÐžÑÐµ Ðž ÑÐµÐ»ÐºÐœÐžÑÐµ ÐŽÐ²Ð° ÑÐ°Ð·Ð° ÐœÐ° ÑÐ°ÐŒÐŸÑÐ°ÑÐ¿Ð°ÐºÑÐµÐŒÐŸÐŒ ÐžÑÐ¿ÐŸÐ»ÐœÑÐµÐŒÐŸÐŒ ÑÐ°Ð¹Ð»Ðµ.}
+
+
+#######################################################################
+
+package examples
+
+_t47_ [l=ru] {ÐÑÐžÐŒÐµÑÑ Greenstone Ð² ÐŽÐµÐ¹ÑÑÐ²ÐžÐž}
+
+_t48_ [l=ru] {ÐÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐžÐ¹ Ð¿ÑÐŸÐµÐºÑ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž}
+
+_t49_ [l=ru] {ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐ¹ ÑÐ°Ð¹Ñ, ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐœÑÐ¹ ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÑÐžÐºÐ°ÐŒÐž Greenstone - ÐÑÐŸÐµÐºÑÐ° ÐœÐŸÐ²ÐŸÐ·ÐµÐ»Ð°ÐœÐŽÑÐºÐŸÐ¹ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž. Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐŒÐœÐŸÐ³ÐŸ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ð² Ð¿ÑÐµÐŽÐµÐ»Ð°Ñ
+ ÐŸÑ Ð³ÑÐŒÐ°ÐœÐžÑÐ°ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž ÐŽÐŸ ÑÐµÑ
+ÐœÐžÑÐµÑÐºÐžÑ
+ ÐŸÑÑÐµÑÐŸÐ² Ð¿ÐŸ ÐºÐŸÐŒÐ¿ÑÑÑÐµÑÐœÑÐŒ ÐœÐ°ÑÐºÐ°ÐŒ Ðž ÐŽÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÐºÐžÑÐ°Ð¹ÑÐºÐžÑ
+ Ðž Ð°ÑÐ°Ð±ÑÐºÐžÑ
+ ÐŽÐŸÐºÑÐŒÐµÐœÑÐŸÐ².}
+
+_t50_ [l=ru] {Ð ÐŸÑÑÐžÐ¹ÑÐºÐ°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° Greenstone}
+
+_t51_ [l=ru] {Ð¡Ð°Ð¹Ñ Greenstone, ÑÐŸÐŽÐµÑÐ¶Ð°ÑÐžÐ¹ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÐœÐ° ÑÑÑÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ. Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ Ð±ÑÐ» ÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœ ÑÐµÐ³ÐžÐŸÐœÐ°Ð»ÑÐœÑÐŒ Ð¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÑÐŒ Ð²ÐµÐŽÐŸÐŒÑÑÐ²ÐŸÐŒ Ð ÐµÑÐ¿ÑÐ±Ð»ÐžÐºÐž ÐÐ°ÑÐž ÑÐ»Ñ Ð ÐŸÑÑÐžÐ¹ÑÐºÐŸÐ¹ Ð€ÐµÐŽÐµÑÐ°ÑÐžÐž.}
+
+_t52_ [l=ru] {ÐÑÐŸÐµÐºÑ Gutenberg}
+
+_t53_ [l=ru] {ÐÑÐŸÐŽÐŸÐ»Ð¶Ð°ÑÑÐžÐ¹ÑÑ Ð¿ÑÐŸÐµÐºÑ Ð¿ÐŸ ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ Ðž ÑÐ°ÑÐ¿ÑÐŸÑÑÑÐ°ÐœÐµÐœÐžÑ Ð±ÐµÑÐ¿Ð»Ð°ÑÐœÑÑ
+ ÑÐ»ÐµÐºÑÑÐŸÐœÐœÑÑ
+ ÐžÐ·ÐŽÐ°ÐœÐžÐ¹
+Ð»ÐžÑÐµÑÐ°ÑÑÑÑ. ÐÑÐŸÐµÐºÑ ÐÑÑÐµÐœÐ±ÐµÑÐ³Ð° ÑÐµÐ¹ÑÐ°Ñ ÑÐŸÐŽÐµÑÐ¶ÐžÑ Ð±ÐŸÐ»ÐµÐµ 3700 ÐœÐ°Ð·Ð²Ð°ÐœÐžÐ¹ ÐŸÑ  ÐšÐµÐºÑÐ¿ÐžÑÐ° ÐŽÐŸ ÐÐžÐºÐºÐµÐœÑÐ° Ðž ÑÐµÑÑÐµÑ ÐÑÐŸÐœÑÐµ. Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ, Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÐŒÑÐ¹ Ibiblio, ÐŸÐŽÐžÐœ ÐžÐ· ÐŸÑÐžÐ³ÐžÐœÐ°Ð»ÑÐœÑÑ
+ Ð·ÐµÑÐºÐ°Ð»ÑÐœÑÑ
+ ÑÐ°Ð¹ÑÐŸÐ² ÐÑÑÐµÐœÐ±ÐµÑÐ³Ð° ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ Greenstone ÐŽÐ»Ñ ÑÐŸÐ³ÐŸ, ÑÑÐŸÐ±Ñ ÑÐŽÐµÐ»Ð°ÑÑ Ð¿ÐŸÐ»ÐœÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÑÑÐµÐœÐ±ÐµÑÐ³Ð° Ð² ÑÐŸÑÐŒÐµ,ÐŸÐ±ÐµÑÐ¿ÐµÑÐžÐ²Ð°ÑÑÐµÐ¹ Ð²ÑÐµÑÑÐŸÑÐŸÐœÐœÐžÐ¹ Ð¿ÐŸÐžÑÐº.}
+
+_t54_ [l=ru] {Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑ Ð¿ÑÐžÐºÐ»Ð°ÐŽÐœÑÑ
+ ÐœÐ°ÑÐº, ÐšÑÑÑÐ³Ð°ÑÑ.}
+
+_t55_ [l=ru] {ÐÑÑÑÐ°Ñ ÑÐºÐŸÐ»Ð° ÐÐµÐŽÐžÐµÐœ - ÑÐžÑÑÐŸÐ²Ð°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° "ÐÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ðž Ð¡ÐÐ", ÑÐŸÐ·ÐŽÐ°ÐœÐœÐ°Ñ Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐŸÐŒ Ð¿ÑÐžÐºÐ»Ð°ÐŽÐœÑÑ
+ ÐœÐ°ÑÐº, Ð² ÐšÑÑÑÐ³Ð°ÑÑÐµ (ÐÐµÑÐŒÐ°ÐœÐžÑ).}
+
+_t56_ [l=ru] {ÐÑÑ
+ÐžÐ² ÐºÐŸÐ»Ð»ÐµÐŽÐ¶Ð° ÐÑÐµÑÐ°ÐŒ}
+
+_t57_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°, ÑÐŸÐ·ÐŽÐ°ÐœÐœÐ°Ñ Ð² ÐÑÐµÑÐ°ÐŒÑÐºÐŸÐŒ ÐºÐŸÐ»Ð»ÐµÐŽÐ¶Ðµ (ÐÐŸÐœÐŽÐŸÐœ, ÐÐœÐ³Ð»ÐžÑ).}
+
+_t58_ [l=ru] {ÐŠÐµÐœÑÑ Ð¿ÐŸ ÐžÐ·ÑÑÐµÐœÐžÑ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº.}
+
+_t59_ [l=ru] {A*M Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑ ÑÑÐ°ÑÐ° Ð¢ÐµÑ
+Ð°Ñ- ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÑÐµÐ»ÑÑÐºÐžÐ¹ ÑÐ°Ð¹Ñ ÑÐžÑÑÐŸÐ²ÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº, ÑÐŸÐŽÐµÑÐ¶Ð°ÑÐžÐ¹ ÑÐŸÑÐŸÐºÐŸÐ¿ÐžÐž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone Ñ Ð°ÐºÑÐµÐœÑÐŸÐŒ ÐœÐ° ÑÐžÑÑÐŸÐ²ÑÑ ÑÐ»ÐŸÑÑ.}
+
+_t60_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐÐµÐºÐžÐœÑÐºÐŸÐ³ÐŸ Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ°}
+
+_t61_ [l=ru] {ÐÐ²Ðµ ÑÐºÑÐ¿ÐµÑÐžÐŒÐµÐœÑÐ°Ð»ÑÐœÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐµ Ð² ÐÐµÐºÐžÐœÑÐºÐŸÐŒ Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐµ.}
+
+_t62_ [l=ru] {ÐÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÐµ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÑ ÐŒÑÐ·ÑÐºÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž}
+
+_t63_ [l=ru] {ÐÐžÑÑÑÐ°Ð»ÑÐœÑÐ¹ ÐŽÐŸÐŒ Ð²ÐŸÑÑÑÐ°ÐœÐŸÐ²Ð»ÐµÐœÐžÑ ÐŒÑÐ·ÑÐºÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž.}
+
+_t64_ [l=ru] {ÐÐ»ÑÐ±ÐŸÐŒ ÑÐŸÑÐŸÐ³ÑÐ°ÑÐžÐ¹}
+
+_t65_ [l=ru] {ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ ÑÐŸÑÐŸÐ³ÑÐ°ÑÐžÐ¹, Ð²Ð·ÑÑÑÑ
+ ÐžÐ· <a href="mailto:gordon.paynter@ucr.edu">Ð¥ÑÐŽÐŸÐ¶ÐœÐžÐº ÐÐŸÑÐŽÐŸÐœ</a>.}
+
+_t66_ [l=ru] {Ð¡Ð¿ÐµÑÐžÐ°Ð»ÑÐœÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÐ°ÑÐžÐœÐ³ÑÐŸÐœÑÐºÐŸÐ³ÐŸ ÐºÐŸÐœÑÐŸÑÑÐžÑÐŒÐ° ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÑÐµÐ»ÑÑÐºÐžÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº.}
+
+_t67_ [l=ru] {ÐŠÐžÑÑÐŸÐ²ÐŸÐ¹ ÐŒÐ°ÑÐµÑÐžÐ°Ð» ÐžÐ· ÑÐ¿ÐµÑÐžÐ°Ð»ÑÐœÑÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ð²ÐŸÑÑÐŒÐž ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐŸÐ²
+WRLC Ð² ÐÐ°ÑÐžÐœÐ³ÑÐŸÐœÐµ, ÐŸÐºÑÑÐ³ ÐÐŸÐ»ÑÐŒÐ±ÐžÑ, Ð¡ÐšÐ.}
+
+_t68_ [l=ru] {ÐÑÑ
+ÐžÐ²Ñ ÐžÐœÐŽÐžÐ¹ÑÐºÐŸÐ³ÐŸ ÑÑÑÐŽÐ°}
+
+_t69_ [l=ru] {Ð¡ÐŸÐ²ÐŒÐµÑÑÐœÑÐ¹ Ð¿ÑÐŸÐµÐºÑ ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ³ÐŸ ÐžÐœÑÑÐžÑÑÑÐ° ÑÑÑÐŽÐ° V.V. Giri Ðž  ÐÑÑÐŸÑÐžÐ°ÑÐžÐž ÐžÑÑÐŸÑÐžÐºÐŸÐ² ÐžÐœÐŽÐžÐ¹ÑÐºÐŸÐ³ÐŸ ÑÑÑÐŽÐ°. ÐÑÑ
+ÐžÐ²Ñ ÐžÐœÐŽÐžÐ¹ÑÐºÐŸÐ³ÐŸ ÑÑÑÐŽÐ°  Ð¿ÐŸÑÐ²ÑÑÐµÐœÑ ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÑ Ðž ÑÐŸÐ·ÐŽÐ°ÐœÐžÑ ÐŽÐŸÑÑÑÐ¿ÐœÐŸÑÑÐž Ð±ÑÑÑÑÐŸ ÐžÑÑÐµÐ·Ð°ÑÑÐžÑ
+  ÐŽÐŸÐºÑÐŒÐµÐœÑÐŸÐ² ÐžÐœÐŽÐžÐ¹ÑÐºÐŸÐ³ÐŸ ÑÐ°Ð±ÐŸÑÐµÐ³ÐŸ ÐºÐ»Ð°ÑÑÐ°.}
+
+_t70_ [l=ru] {ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÐ°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ NCSI}
+
+_t71_ [l=ru] {ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÑÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž, ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐµ ÑÑÑÐŽÐµÐœÑÐ°ÐŒÐž Ðž Ð¿ÐµÑÑÐŸÐœÐ°Ð»ÐŸÐŒ ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ³ÐŸ
+ÑÐµÐœÑÑÐ° ÐœÐ°ÑÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž, ÐžÐœÐŽÐžÐ¹ÑÐºÐžÐŒ ÐžÐœÑÑÐžÑÑÑÐŸÐŒ ÐœÐ°ÑÐºÐž (ÐÐ°ÐœÐ³Ð°Ð»ÐŸÑ, ÐÐœÐŽÐžÑ). ÐÐœÐŸÐ³ÐžÐµ ÐžÐ· ÑÑÐžÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ Ð²ÐºÐ»ÑÑÐ°ÑÑ ÑÐŸÐŽÐµÑÐ¶ÐžÐŒÐŸÐµ ÐœÐ° ÑÐ·ÑÐºÐ°Ñ
+ ÐºÐ°ÐœÐœÐ°ÐŽÑ Ðž Ñ
+ÐžÐœÐŽÐž.}
+
+_t72_ [l=ru] {ÐÑÑ-Ð¹ÐŸÑÐºÑÐºÐžÐ¹ Ð±ÐŸÑÐ°ÐœÐžÑÐµÑÐºÐžÐ¹ ÑÐ°ÐŽ}
+
+_t73_ [l=ru] {ÐŠÐžÑÑÐŸÐ²ÐŸÐ¹ Ð¿ÑÐŸÐµÐºÑ ÑÐµÐŽÐºÐŸÐ¹ ÐºÐœÐžÐ³Ðž LuEsther T. Mertz ÐžÐ· Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐÑÑ-Ð¹ÐŸÑÐºÑÐºÐŸÐ³ÐŸ Ð±ÐŸÑÐ°ÐœÐžÑÐµÑÐºÐŸÐ³ÐŸ ÑÐ°ÐŽÐ°.}
+
+_t74_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐŒÐŸÑÑÐŸÐ² Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ° Lehigh}
+
+_t75_ [l=ru] {ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ, ÑÐŸÐŽÐµÑÐ¶Ð°ÑÐ°Ñ ÑÑÐžÐŽÑÐ°ÑÑ ÐºÐœÐžÐ³ ÐŸ ÐŒÐŸÑÑÐ°Ñ
+, Ð²ÑÐµ ÐžÐ· ÐºÐŸÑÐŸÑÑÑ
+ Ð±ÑÐ»Ðž ÐžÐ·ÐŽÐ°ÐœÑ ÐŒÐµÐ¶ÐŽÑ 1811 Ðž 1899 Ð³ÐŸÐŽÐ°ÐŒÐž. ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð±ÑÐ»Ð° ÑÐŸÐ·ÐŽÐ°ÐœÐ° Ð² Lehigh ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐµ (ÑÑÐ°Ñ ÐÐµÐœÑÐžÐ»ÑÐ²Ð°ÐœÐžÑ) Ðž Ð² ÐœÐµÐ¹ ÑÐžÐ³ÑÑÐžÑÑÐµÑ ÑÑÐ¶ÐµÐ»ÐŸ ÐœÐ°ÑÑÑÐŸÐµÐœÐœÑÐ¹ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÑÑÐºÐžÐ¹ ÐžÐœÑÐµÑÑÐµÐ¹Ñ.}
+
+_t76_ [l=ru] {Ð Ð°ÐœÐœÐžÐµ ÐžÐ·ÐŽÐ°ÐœÐžÑ ÐšÐŸÐ¿ÐµÐœÐ°.}
+
+_t77_ [l=ru] {ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ ÑÐžÑÑÐŸÐ²ÑÑ
+ ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÐ¹ ÑÐ°ÐœÐœÐžÑ
+ Ð¿ÐµÑÐ°ÑÐœÑÑ
+ ÐžÐ·ÐŽÐ°ÐœÐžÐ¹ ÐŒÑÐ·ÑÐºÐ°Ð»ÑÐœÑÑ
+ ÐºÐŸÐŒÐ¿ÐŸÐ·ÐžÑÐžÐ¹ Ð€ÐµÐŽÐµÑÐžÐºÐ° ÐšÐŸÐ¿ÐµÐœÐ°. Ð­ÑÐ° ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð±ÑÐ»Ð° ÑÐŸÐ·ÐŽÐ°ÐœÐ° Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ¹ Ð§ÐžÐºÐ°Ð³ÑÐºÐŸÐ³ÐŸ ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ°. ÐÐŸÐ³ÐŽÐ° ÐŸÐœÐ° Ð±ÑÐŽÐµÑ Ð·Ð°ÐºÐŸÐœÑÐµÐœÐ°, ÐŸÐœÐ° Ð±ÑÐŽÐµÑ Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð¿ÐŸÐ»ÐœÐŸÐµ ÑÐŸÐ±ÑÐ°ÐœÐžÐµ Ð±ÐŸÐ»ÐµÐµ 400 ÑÐ°ÐœÐœÐžÑ
+  ÐžÐ·ÐŽÐ°ÐœÐžÐ¹ ÐšÐŸÐ¿ÐµÐœÐ°. ÐÐŸÐœÑÐžÐ³ÑÑÐ°ÑÐžÐŸÐœÐœÑÐ¹ ÑÐ°Ð¹Ð» ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone ÐŽÐ»Ñ ÑÑÐŸÐ¹ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Ð±ÑÐ» ÑÐ°ÐºÐ¶Ðµ ÑÐŽÐµÐ»Ð°Ðœ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒ Ðž ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð³ÑÑÐ¶ÐµÐœ Ñ <a href="http://chopin.lib.uchicago.edu/gsdl/collect/chopin/etc/collect.cfg">Ð·ÐŽÐµÑÑ</a>.}
+
+_t78_ [l=ru] {ÐÑÐ±Ð»ÐžÑÐœÐ°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° Slavonski Brod.}
+
+_t79_ [l=ru] {ÐÐžÐ»ÐŸÑÐœÑÐ¹ Ð¿ÑÐŸÐµÐºÑ ÐŸÑÐžÑÑÐŸÐ²ÐºÐž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÐŒÐµÑÑÐœÑÑ
+ ÑÑÑÐŽÐžÐ¹ Ð² Ð¿ÑÐ±Ð»ÐžÑÐœÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐµ Slavonski
+Brod (Ð¥ÐŸÑÐ²Ð°ÑÐžÑ).}
+
+_ex1t_ [l=ru] {Ð§ÑÐŽÐŸ ÐÐžÐºÐŸÑÐŒÐµÑÐºÐ°ÑÐž}
+
+_ex1d_ [l=ru] {Mirabilia Vicomercati ÑÐ²Ð»ÑÐµÑÑÑ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶Ð°ÑÑÐžÐŒÑÑ Ð¿ÑÐŸÐµÐºÑÐŸÐŒ, ÑÑÐºÐŸÐ²ÐŸÐŽÐžÐŒÑÐŒ ÐÑÐ±Ð»ÐžÑÐœÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ¹ ÐÐžÐŒÐµÑÐºÐµÐ¹ÑÐ° (ÐÐžÐ»Ð°Ðœ, ÐÑÐ°Ð»ÐžÑ), ÑÐµÐ»ÑÑ ÐºÐŸÑÐŸÑÐŸÐ³ÐŸ ÑÐ²Ð»ÑÐµÑÑÑ ÐŸÑÐžÑÑÐŸÐ²ÐºÐ° ÐŒÐµÑÑÐœÑÑ
+ ÐžÑÑÐŸÑÐžÑÐµÑÐºÐžÑ
+ Ð¿ÐµÑÐ²ÐŸÐžÑÑÐŸÑÐœÐžÐºÐŸÐ². ÐÑÐŽÐµÑ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐŸ ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ - ÑÐŸÑÐŸÐ³ÑÐ°ÑÐžÐž, Ð¿ÐŸÑÑÐŸÐ²ÑÐµ ÐŸÑÐºÑÑÑÐºÐž, ÐºÐ°ÑÑÑ, ÑÐµÐºÑÑÑ, ÑÐ¿ÑÐ°Ð²ÐŸÑÐœÐžÐºÐž, ÐŒÑÐ»ÑÑÐžÐŒÐµÐŽÐžÐ° - ÑÑÐŸÐ±Ñ ÑÐŽÐµÐ»Ð°ÑÑ  ÐžÑ
+ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒÐž, ÑÐ¿ÐŸÑÐŸÐ±ÑÑÐ²ÐŸÐ²Ð°ÑÑ ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÑ ÐžÑÑÐŸÑÐžÑÐµÑÐºÐŸÐ¹ Ð¿Ð°ÐŒÑÑÐž ÐÐžÐŒÐµÑÐºÐµÐ¹ÑÐ° Ðž ÐµÐ³ÐŸ ÑÐµÐ³ÐžÐŸÐœÐ°.
+}
+
+_ex2t_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÑÐ³ÑÑ ÐÐµÑÐ»ÐžÐ°ÐœÑÐºÐŸÐ³ÐŸ ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ° ÑÑÐ°ÑÐ° ÐÐ»Ð»ÐžÐœÐŸÐ¹Ñ }
+
+_ex2d_ [l=ru] {ÐÐ°Ð·ÐµÑÐ° ÐÑÐ³ÑÑ ÐÐµÑÐ»ÐžÐ°ÐœÑÐºÐŸÐ³ÐŸ Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ° ÑÑÐ°ÑÐ° ÐÐ»Ð»ÐžÐœÐŸÐ¹Ñ ÐžÐ·ÐŽÐ°Ð²Ð°Ð»Ð°ÑÑ Ð¿ÐŸÐŽ ÑÑÑÐŽÐµÐœÑÐµÑÐºÐžÐŒ                                                                                                                                                               ÐœÐ°Ð±Ð»ÑÐŽÐµÐœÐžÐµÐŒ ÐœÐµÐ¿ÑÐµÑÑÐ²ÐœÐŸ Ñ 1894 Ð³ÐŸÐŽÐ°. Ð­ÑÐ° ÑÐžÑÑÐŸÐ²Ð°Ñ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÑÐ²Ð»ÑÐµÑÑÑ ÑÐ°ÑÑÑÑ Ð¿ÑÐŸÐŽÐŸÐ»Ð¶Ð°ÑÑÐµÐ³ÐŸÑÑ Ð¿ÑÐŸÐµÐºÑÐ°  Ð¿ÐŸ ÑÐŸÑ
+ÑÐ°ÐœÐµÐœÐžÑ Ðž ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÐŽÐŸÑÑÑÐ¿Ð° Ðº ÐžÐ·ÐŽÐ°ÐœÐžÑÐŒ ÐÑÐ³ÑÑÐ°, ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÑÐŒ Ð² 1894-2000 Ð³ÐŸÐŽÑ.
+}
+
+_ex3t_ [l=ru] {ÐÑÐ°Ð²Ð° ÑÐµÐ»ÐŸÐ²ÐµÐºÐ° Ð² ÐÑÐ³ÐµÐœÑÐžÐœÐµ}
+
+_ex3d_ [l=ru] {Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐŸÐ±Ð»ÐŸÐ¶ÐºÐž ÑÐ°Ð¹Ð»ÐŸÐ² ÐŽÐŸÐºÑÐŒÐµÐœÑÐŸÐ², ÑÐŸÑÐŸÐ³ÑÐ°ÑÐžÐ¹  Ðž ÐºÐœÐžÐ³ ÐŽÐµÑÐµÐ¹, Ð¿ÐŸÑ
+ÐžÑÐµÐœÐœÑÑ
+ Ð² Ð¿ÐµÑÐžÐŸÐŽ ÐŽÐžÐºÑÐ°ÑÑÑÑ  1976-1983 Ð³ÐŸÐŽÐŸÐ², Ð·Ð°ÐºÐŸÐœÐŸÐŽÐ°ÑÐµÐ»ÑÑÑÐ²ÐŸ Ð¿ÐŸ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐž, ÑÑÐžÐŽÐžÑÐµÑÐºÐ°Ñ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ Ðž ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÑÑÐ³ÐžÐµ Ð¿ÑÐµÐŽÐŒÐµÑÑ. ÐÐœÐŸ Ð±ÑÐ»ÐŸ ÐŸÑÐœÐŸÐ²Ð°ÐœÐŸ Ð¡ÐµÐºÑÐµÑÐ°ÑÐžÐ°ÑÐŸÐŒ Ð¿ÐŸ Ð¿ÑÐ°Ð²Ð°ÐŒ ÑÐµÐ»ÐŸÐ²ÐµÐºÐ° ÐÑÐ³ÐµÐœÑÐžÐœÑ, ÐºÐŸÑÐŸÑÑÐ¹ ÑÐ²Ð»ÑÐµÑÑÑ ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ¹ ÐºÐŸÐŒÐžÑÑÐžÐµÐ¹, Ð±ÐŸÑÑÑÐµÐ¹ÑÑ Ð·Ð° Ð¿ÑÐ°Ð²Ð°, ÐºÐŸÑÐŸÑÑÐµ Ð»ÐžÑÐœÐŸÑÑÑ ÐžÐŒÐµÐµÑ ÐŽÐ»Ñ Ð¿ÐŸÐ·ÐœÐ°ÐœÐžÑ ÑÐµÐ±Ñ ÐžÐ»Ðž ÑÐ²ÐŸÐµÐ³ÐŸ ÑÐ°ÐŒÐŸÑÐŸÐ·ÐœÐ°ÐœÐžÑ, Ð² ÑÐ°ÑÑÐœÐŸÑÑÐž, ÐºÐŸÐ³ÐŽÐ° ÐžÑ
+ ÑÐŸÐŽÐžÑÐµÐ»Ðž ÐžÑÑÐµÐ·Ð»Ðž.
+}
+
+_ex4t_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐÑÐ±ÑÑÐœÑÐºÐŸÐ³ÐŸ ÑÐœÐžÐ²ÐµÑÑÐžÑÐµÑÐ°}
+
+_ex4d_ [l=ru] {Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐŽÐ²Ðµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=postcard">ÐÐ»Ð°Ð±Ð°ÐŒÑÐºÐžÐµ ÐŸÑÐºÑÑÑÐºÐž</a> ÑÐŸÐŽÐµÑÐ¶Ð°Ñ Ð±ÐŸÐ»ÐµÐµ 300 ÐŸÑÐºÑÑÑÐŸÐº, ÐžÐ·ÐŸÐ±ÑÐ°Ð¶Ð°ÑÑÐžÑ
+ Ð·ÐŽÐ°ÐœÐžÑ, ÐµÑÑÐµÑÑÐ²ÐµÐœÐœÑÑ ÐŸÐ±ÑÑÐ°ÐœÐŸÐ²ÐºÑ, ÑÐŸÐ±ÑÑÐžÑ Ðž ÐŽÑÑÐ³ÐžÐµ ÐŒÐµÑÑÐ° Ð² ÑÐ°Ð·Ð»ÐžÑÐœÑÑ
+ Ð³ÐŸÑÐŸÐŽÐ°Ñ
+ ÐÐ»Ð°Ð±Ð°ÐŒÑ ÐœÐ°ÑÐ°Ð»Ð° 20-ÐŸÐ³ÐŸ ÑÑÐŸÐ»ÐµÑÐžÑ. Ð­ÑÐž ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ ÐºÐ»Ð°ÑÑÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÑ Ð¿ÐŸ ÐŒÐµÑÑÑ, Ð° ÑÐ°ÐºÐ¶Ðµ Ð¿ÐŸ ÐœÐ°Ð·Ð²Ð°ÐœÐžÑ. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=alauths">ÐÐ»Ð°Ð±Ð°ÐŒÑÐºÐžÐµ ÐÐ²ÑÐŸÑÑ </a> ÐŽÐ°ÑÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŸÐ± Ð°Ð»Ð°Ð±Ð°ÐŒÑÐºÐžÑ
+ Ð°Ð²ÑÐŸÑÐ°Ñ
+ 20-ÐŸÐ³ÐŸ ÑÑÐŸÐ»ÐµÑÐžÑ, ÐºÐŸÑÐŸÑÑÐµ ÑÐ²ÐŸÑÐžÐ»Ðž, Ðž ÐŸÐ±ÐœÐŸÐ²Ð»ÑÑÑÑÑ Ð°ÑÑÐŸÑÐžÐ°ÑÐžÐµÐ¹ ÐÐ»Ð°Ð±Ð°ÐŒÑÐºÐžÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐº. Ð­ÑÐŸ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐœÐ°ÑÐ°Ð»Ð° Ð¶ÐžÐ·ÐœÑ ÐºÐ°Ðº Ð¿ÐµÑÐ°ÑÐœÑÐ¹ ÐŽÐŸÐºÑÐŒÐµÐœÑ, ÑÐŸÐ·ÐŽÐ°ÐœÐœÑÐ¹ Ð² WordPerfect 5.2, ÐºÐŸÑÐŸÑÑÐ¹ Ð¿ÑÐµÑÐµÑÐ¿ÐµÐ» ÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÐžÑÐµÑÐ°ÑÐžÐ¹ ÐŽÐŸ ÑÐŸÐ³ÐŸ, ÐºÐ°Ðº ÑÑÐ°ÑÑ Ð¿ÐŸÐ»ÐœÐŸÑÑÑÑ ÐŽÐŸÑÑÑÐ¿ÐœÐŸÐ¹ ÐŽÐ»Ñ Ð¿ÐŸÐžÑÐºÐ° Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÐµÐŒ Greenstone.}
+
+_ex5t_ [l=ru] {ÐÐŸÑÑÐŽÐ°ÑÑÑÐ²ÐµÐœÐœÐ°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž ÐœÐŸÑ ÐŒÑÐ·ÑÐºÐž Ð¢Ð°ÑÐŒÐ°ÐœÐžÐž}
+
+_ex5d_ [l=ru] {Ð­ÑÐŸÑ ÑÐ°Ð¹Ñ ÐŽÐµÐ»Ð°ÐµÑ ÐŽÐŸÑÑÑÐ¿ÐœÑÐŒ Ð¿ÑÐžÐ±Ð»ÐžÐ·ÐžÑÐµÐ»ÑÐœÐŸ ÐŽÐ²ÐµÑÑÐž ÑÐ»ÐµÐŒÐµÐœÑÐŸÐ² ÐžÐ· Ð±ÐŸÐ³Ð°ÑÐŸÐ³ÐŸ Ñ
+ÑÐ°ÐœÐžÐ»ÐžÑÐ° ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÐŸÐ¹ ÐŒÑÐ·ÑÐºÐž Ð² ÐÐŸÑÑÐŽÐ°ÑÑÑÐ²ÐµÐœÐœÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹ ÐœÐ°ÑÐ»ÐµÐŽÐžÑ Ð¢Ð°ÑÐŒÐ°ÐœÐžÐž. ÐÐœÐž ÑÐŸÐ·ÐŽÐ°ÐœÑ Ð² Ð¿ÐµÑÐžÐŸÐŽ Ñ 1840-ÑÑ
+ ÐŽÐŸ 1930-ÑÑ
+ Ð³ÐŸÐŽÐŸÐ² Ðž Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð¿ÑÐµÑÑ ÐŽÐ»Ñ ÑÐŸÑÑÐµÐ¿ÐžÐ°ÐœÐŸ Ðž ÐŽÑÑÐ³ÐžÑ
+ ÐžÐœÑÑÑÑÐŒÐµÐœÑÐŸÐ², ÐŒÐµÐŽÐœÑÑ
+ ÐŽÑÑ
+ÐŸÐ²ÑÑ
+ ÐŸÑÐºÐµÑÑÑÐŸÐ² Ðž Ð¿ÐµÑÐœÐž Ð²ÑÐµÑ
+ Ð²ÐžÐŽÐŸÐ² - Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ, ÑÐ²ÑÑÐµÐœÐœÑÐµ, Ð¿Ð°ÑÑÐžÐŸÑÐžÑÐµÑÐºÐžÐµ Ðž ÐŽÐ°Ð¶Ðµ Ð¿ÐµÑÐœÐž, Ð·Ð°Ð¿ÐžÑÐ°ÐœÐœÑÐµ ÐŽÐ»Ñ Ð¿ÑÐžÐ²Ð»ÐµÑÐµÐœÐžÑ ÑÑÑÐžÑÑÐŸÐ² Ð¿ÐŸÑÐµÑÐžÑÑ Ð¢Ð°ÑÐŒÐ°ÐœÐžÑ.}
+
+_ex6t_ [l=ru] {ÐÐ°Ð·Ð° ÐŽÐ°ÐœÐœÑÑ
+ Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐ¹ ÐžÐœÐŽÐžÐ¹ÑÐºÐŸÐ³ÐŸ ÐžÐœÑÑÐžÑÑÑÐ° ÐœÐ°ÑÐºÐž}
+
+_ex6d_ [l=ru] {ÐÐœÐŽÐžÐ¹ÑÐºÐžÐ¹ ÐžÐœÑÑÐžÑÑÑ ÐÐ°ÑÐºÐž Ð² ÐÐ°ÐœÐ³Ð°Ð»ÐŸÑÐµ - 560012, ÑÑ.ÐÐ°ÑÐœÐ°ÑÐ°ÐºÐ°, ÐÐœÐŽÐžÑ ÑÐ²Ð»ÑÐµÑÑÑ Ð³Ð»Ð°Ð²ÐœÑÐŒ ÑÑÑÐµÐ¶ÐŽÐµÐœÐžÐµÐŒ Ð¿ÑÐŸÐŽÐ²ÐžÐœÑÑÐŸÐ³ÐŸ ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÑ Ðž ÐŸÐ±ÑÑÐµÐœÐžÑ, Ñ Ð±ÐŸÐ»ÐµÐµ ÑÐµÐŒ 2000 Ð°ÐºÑÐžÐ²ÐœÑÑ
+ ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÑÐµÐ»ÐµÐ¹, ÑÐ°Ð±ÐŸÑÐ°ÑÑÐžÑ
+ Ð² Ð¿ÐŸÑÑÐž Ð²ÑÐµÑ
+ ÐŸÐ±Ð»Ð°ÑÑÑÑ
+ ÐœÐ°ÑÐºÐž Ðž ÑÐµÑ
+ÐœÐžÐºÐž. ÐÑÐœÐŸÐ²Ð°ÐœÐœÑÐ¹ Ð² 1909 Ð³. Ð.Ð.Ð¢Ð°ÑÐŸÐ¹, ÐÐœÑÑÐžÑÑÑ ÐžÐ·ÐŽÐ°ÐµÑ Ð¿ÑÐžÐ±Ð»ÐžÐ·ÐžÑÐµÐ»ÑÐœÐŸ ÐµÐ¶ÐµÐ³ÐŸÐŽÐœÐŸ ÑÐ²ÑÑÐµ 2000 Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐ¹, Ð²ÐºÐ»ÑÑÐ°Ñ Ð¶ÑÑÐœÐ°Ð»ÑÐœÑÐµ ÑÑÐ°ÑÑÐž, Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐž ÐºÐŸÐœÑÐµÑÐµÐœÑÐžÐž, Ð¿Ð°ÑÐµÐœÑÑ, ÑÐŸÐŸÐ±ÑÐµÐœÐžÑ, ÐºÐœÐžÐ³Ðž, ÐºÐœÐžÐ¶ÐœÑÐµ Ð³Ð»Ð°Ð²Ñ. ÐÑÐµÐŽÐ¿ÑÐžÐœÑÑÑÐµ ÑÑÐžÐ»ÐžÑ Ð·ÐŽÐµÑÑ, ÑÐŸÐ±ÑÐ°Ð»Ðž Ð²ÑÐµ ÑÑÐž Ð¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐž ÐžÐ· ÐœÐµÑÐºÐŸÐ»ÑÐºÐžÑ
+ ÐžÐŽÐµÐœÑÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÐœÑÑ
+ ÐžÑÑÐŸÑÐœÐžÐºÐŸÐ², ÐžÑÐºÐ»ÑÑÐžÐ»Ðž ÐŽÐ²ÐŸÐ¹ÐœÑÐµ ÐŸÑÑÐµÑÑ, ÑÑÐ°ÐœÐŽÐ°ÑÑÐžÐ·ÐžÑÐŸÐ²Ð°Ð»Ðž ÐŽÐµÑÐ°Ð»Ðž ÐŒÐµÑÐ°ÐŽÐ°ÐœÐœÑÑ
+. ÐÐŸÐ»ÐœÐŸÑÐµÐºÑÑÐŸÐ²Ð°Ñ ÐŸÐœÐ»Ð°Ð¹Ðœ Ð±Ð°Ð·Ð° ÐŽÐ°ÐœÐœÑÑ
+ Ð±ÑÐ»Ð° ÐŒÐ°ÑÐµÑÐžÐ°Ð»ÐžÐ·ÐŸÐ²Ð°ÐœÐ° Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÐÑÐžÐœÑÑÐŸÑÐœ.}
+
+_ex7t_ [l=ru] {ÐÐœÐžÐ³Ðž ÐžÐ· Ð¿ÑÐŸÑÐ»ÐŸÐ³ÐŸ / Llyfrau o'r Gorffennol}
+
+_ex7d_ [l=ru] {ÐÐœÐžÐ³Ðž ÐžÐ· Ð¿ÑÐŸÑÐ»ÐŸÐ³ÐŸ - ÐŸÐœÐ»Ð°Ð¹Ðœ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð£ÑÐ»ÑÑÐºÐžÑ
+ ÐºÐœÐžÐ³. ÐÑÑÐ°Ð¶Ð°ÐµÑ ÐœÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐµ ÐºÑÐ»ÑÑÑÑÐœÑÐµ ÐžÐœÑÐµÑÐµÑÑ ÐºÐŸÑÐŸÑÑÐµ ÐŽÐŸÐ»Ð³ÐŸÐµ Ð²ÑÐµÐŒÑ ÐœÐµ Ð¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°Ð»ÐžÑÑ, Ðž Ð²ÑÑÐŽ Ð»Ðž, ÐŒÐŸÐ³ÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐžÐ·ÐŽÐ°ÐœÐœÑ ÑÑÐ°ÐŽÐžÑÐžÐŸÐœÐœÑÐŒÐž ÑÑÐµÐŽÑÑÐ²Ð°ÐŒÐž. Ð¢ÐµÐºÑÑÑ ÐŽÐŸÑÑÑÐ¿ÐœÑ Ð² ÐŽÐ²ÑÑ
+ ÑÐŸÑÐŒÐ°Ñ
+ - ÐžÐ·ÐŸÐ±ÑÐ°Ð¶ÐµÐœÐžÑ Ð¿ÐµÑÐ²ÐŸÐœÐ°ÑÐ°Ð»ÑÐœÑÑ
+ ÐºÐœÐžÐ¶ÐœÑÑ
+ ÑÑÑÐ°ÐœÐžÑ, Ð²ÐŒÐµÑÑÐµ Ñ Ð¿ÐŸÐ»ÐœÐŸÑÑÑÑ ÑÐ»ÐµÐºÑÑÐŸÐœÐœÑÐŒ ÑÐµÐºÑÑÐŸÐŒ, Ð¿ÑÐžÐ³ÐŸÐŽÐœÑÐŒ ÐŽÐ»Ñ Ð¿ÐŸÐžÑÐºÐ° Ðž Ð¿ÐŸÐŽÑ
+ÐŸÐŽÑÑÐžÐŒ ÐŽÐ»Ñ Ð¿ÐµÑÐ°ÑÐž. Ð¡ÐŸÐ·ÐŽÐ°ÐœÐœÑÐ¹ Ð¡ÐµÑÑÑ Ð¿ÐŸ ÐºÑÐ»ÑÑÑÑÐµ "Culturenet Cymru" Ðž Ð£ÑÐ»ÑÑÑÐºÐžÐŒ ÐÐœÐžÐ¶ÐœÑÐŒ Ð¡ÐŸÐ²ÐµÑÐŸÐŒ, ÐÐœÐžÐ³Ðž ÐžÐ· Ð¿ÑÐŸÑÐ»ÐŸÐ³ÐŸ - ÑÐµÑÑÑÑ, ÑÐ²ÐŸÐ±ÐŸÐŽÐœÐŸ ÐŽÐŸÑÑÑÐ¿ÐœÑÐ¹ ÐŽÐ»Ñ Ð²ÑÐµÑ
+. ÐÐµÐ±ÑÐ°Ð¹ÑÑ Ð±ÑÐŽÐµÑ ÑÐ°Ð·Ð²ÐžÐ²Ð°ÑÑÑÑ Ðž ÑÐ°ÑÑÐžÑÑÑÑÑÑ Ð² Ð±Ð»ÐžÐ¶Ð°Ð¹ÑÐžÐµ Ð³ÐŸÐŽÑ, ÑÑÐŸÐ±Ñ Ð²ÐºÐ»ÑÑÐžÑÑ ÐœÐ°ÐŒÐœÐŸÐ³ÐŸ Ð±ÐŸÐ»ÑÑÐµ ÐºÐœÐžÐ³ ÐœÐ° Ðž ÐÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐŒ Ðž ÐÐ°Ð»Ð»ÐžÐ¹ÑÐºÐŸÐŒ ÑÐ·ÑÐºÐ°Ñ
+.}
+
+_ex8t_ [l=ru] {Ð¡ÐµÑÑ Ð€ÐžÐ»Ð»ÐžÐ¿ÐžÐœÑÐºÐžÑ
+ ÐÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÑÐµÐ»ÐµÐ¹, ÐÐ±ÑÐ°Ð·ÐŸÐ²Ð°ÐœÐžÑ Ðž Ð¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÐŸÐ¹ ÐÐœÑÐŸÑÐŒÐ°ÑÐžÐž - PREGINET}
+
+_ex8d_ [l=ru] {PREGINET ÐŸÐ±ÑÐµÐœÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐ°Ñ ÑÐµÑÑ ÑÐ²ÑÐ·ÑÐ²Ð°ÑÑÐ°Ñ Ð°ÐºÐ°ÐŽÐµÐŒÐžÑÐµÑÐºÐžÐµ, ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÑÐµÐ»ÑÑÐºÐžÐµ Ðž Ð¿ÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐµÐœÐœÑÐµ ÐžÐœÑÑÐžÑÑÑÑ ÐœÐ° Ð€ÐžÐ»Ð»ÐžÐ¿ÐžÐœÐ°Ñ
+. ÐÐœÑÑÐžÑÑÑ ÐÑÐŸÐŽÐ²ÐžÐœÑÑÐŸÐ¹ ÐÐ°ÑÐºÐž Ðž Ð¢ÐµÑ
+ÐœÐŸÐ»ÐŸÐ³ÐžÐž (ASTI) ÑÐŸÐ·ÐŽÐ°Ð» Ð¿Ð»Ð°ÑÑÐŸÑÐŒÑ ÐœÐ° ÐŸÑÐœÐŸÐ²Ðµ ÐŠÐžÑÑÐŸÐ²ÐŸÐ¹ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐŽÐ»Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ Ð¿Ð°ÑÑÐœÐµÑÑÐºÐžÐŒÐž ÑÑÑÐµÐ¶ÐŽÐµÐœÐžÑÐŒÐž PREGINET. ÐÑÐ»Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Ð€ÐžÐ»ÐžÐ¿ÐžÐœÑÐºÐŸÐ³ÐŸ Ð¶ÑÑÐœÐ°Ð»Ð° Ð¿ÐŸ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÐŸ-ÐºÐŸÐŒÐŒÑÐœÐžÐºÐ°ÑÐžÐŸÐœÐœÑÐŒ ÑÐµÑ
+ÐœÐŸÐ»ÐŸÐ³ÐžÑÐŒ (ÐÐÐ¢) Ðž ÐŒÐžÐºÑÐŸÑÐ»ÐµÐºÑÑÐŸÐœÐžÐºÐµ (PJICTM), ÐœÐŸÐ²ÐŸÑÑÐž PREGINET, Ðž Ð²ÐžÐŽÐµÐŸÐºÐŸÐ»Ð»ÐµÑÐžÑ ASTI.
+}
+
+_ex9t_ [l=ru] {Ulukau - ÐÐ°Ð²Ð°Ð¹ÑÐºÐ°Ñ ÑÐ»ÐµÐºÑÑÐŸÐœÐœÐ°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°}
+
+_ex9d_ [l=ru] {Ulukau ÐŸÐ±ÐµÑÐ¿ÐµÑÐžÐ»Ð° ÐŽÐŸÑÑÑÐ¿ Ðº ÑÐµÑÑÑÑÐ°ÐŒ ÐŽÐ»Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ, ÐŸÐ±ÑÑÐµÐœÐžÑ Ðž ÑÐ°Ð·Ð²ÐžÑÐžÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÐÐ°Ð²Ð°Ð¹ÑÐºÐŸÐ³ÐŸ ÑÐ·ÑÐºÐ°. Ð¡ÐŸÐ·ÐŽÐ°ÐœÐŸ Ð¿ÑÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐ¹: "Ka HoÊ»oilina: Puke Pai Ê»Ålelo HawaiÊ»i" (ÐÐ°ÑÐ»ÐµÐŽÐžÐµ: ÐÑÑÐœÐ°Ð» ÐÐ°Ð²Ð°Ð¹ÑÐºÐžÑ
+ ÑÐ·ÑÐºÐŸÐ²ÑÑ
+ ÑÐµÑÑÑÑÐŸÐ²), ÐÐ°Ð²Ð°Ð¹ÑÐºÐžÐµ Ð³Ð°Ð·ÐµÑÑ, Baibala Hemolele (ÐÐ°Ð²Ð°Ð¹ÑÐºÐ°Ñ Ð±ÐžÐ±Ð»ÐžÑ), ÐÐ°Ð²Ð°Ð¹ÑÐºÐžÐµ ÑÐ»ÐŸÐ²Ð°ÑÐž Ðž ÐÐ°Ð²Ð°Ð¹ÑÐºÐžÐµ ÐºÐœÐžÐ³Ðž.
+}
+
+_ex10t_ [l=ru] {ÐÐµÑÑÐŸÐ¹ÑÑÐºÐ°Ñ ÐÑÐ±Ð»ÐžÑÐœÐ°Ñ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°: ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÐ·Ð°Ð»ÐžÐž Ð¥Ð°ÐºÐ»Ðž (E. Azalia Hackley) }
+
+_ex10d_ [l=ru] {Ð­ÑÐ° ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÐœÐŸÑÐœÑÐµ Ð»ÐžÑÑÑ Ð±ÐŸÐ»ÐµÐµ 500 Ð¿ÑÐŸÐžÐ·Ð²ÐµÐŽÐµÐœÐžÐ¹ 19-Ð³ÐŸ Ðž 20-Ð³ÐŸ Ð²ÐµÐºÐŸÐ² ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÑÑ
+  ÐŒÐµÐ¶ÐŽÑ 1799 Ðž 1922 Ð³.Ð³. ÐÐµÑÐµÐœÐœÑÐµ ÑÐµÐŒÑ ÐŸÑ
+Ð²Ð°ÑÑÐ²Ð°ÑÑ Ð¶ÐžÐ·ÐœÑ ÐœÐ° Ð¿Ð»Ð°ÐœÑÐ°ÑÐžÑÑ
+ ÐœÐ°ÑÐ°Ð»Ð° 19-Ð³ÐŸ Ð²ÐµÐºÐ° ÐœÐ° Ð®Ð³Ðµ ÐÐŒÐµÑÐžÐºÐž , Ð¿ÐµÑÐžÐŸÐŽ Ð³ÑÐ°Ð¶ÐŽÐ°ÐœÑÐºÐŸÐ¹ Ð²ÐŸÐ¹ÐœÑ, Ð°Ð±ÐŸÐ»ÐžÑÐžÐŸÐœÐžÐ·ÐŒ, ÑÐŒÐ°ÐœÑÐžÐ¿Ð°ÑÐžÑ Ðž Ð ÐµÐºÐŸÐœÑÑÑÑÐºÑÐžÑ, Ð¿ÑÐŸÐžÐ·Ð²ÐµÐŽÐµÐœÐžÑ Ð¿ÐŸÐ¿ÑÐ»ÑÑÐœÑÐµ Ð² ÐœÐ°ÑÐ°Ð»Ðµ 20 Ð²ÐµÐºÐ°, Ðž ÐŒÑÐ·ÑÐºÐ°Ð»ÑÐœÑÐµ ÑÑÐµÑÐµÐŸÑÐžÐ¿Ñ Ð°ÑÑÐŸÑÐžÐžÑÐŸÐ²Ð°ÐœÐœÑÐµ Ñ ÑÐµÑÐœÐŸÐ»ÐžÑÑÐŒÐž ÐŒÐžÐœÐžÑÑÑÐµÐ»ÑÐŒÐž. }
+
+_ex11t_ [l=ru] {ÐÐœÐŽÐžÐ¹ÑÐºÐžÐ¹ ÐÐœÑÑÐžÑÑÑ Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÑ ÐÐŸÐ¶ÐžÐºÐŸÐŽÐµ }
+
+_ex11d_ [l=ru] {ÐÐœÐŽÐžÐ¹ÑÐºÐžÐ¹ ÐÐœÑÑÐžÑÑÑ Ð£Ð¿ÑÐ°Ð²Ð»ÐµÐœÐžÑ ÐÐŸÐ¶ÐžÐºÐŸÐŽÐµ (<a href="http://www.iimk.ac.in">http://www.iimk.ac.in</a>)- Ð³Ð»Ð°Ð²ÐœÐ°Ñ ÑÐºÐŸÐ»Ð° ÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐžÑ ÐŸÑÐœÐŸÐ²Ð°ÐœÐœÐ°Ñ  ÐÑÐ°Ð²ÐžÑÐµÐ»ÑÑÑÐ²ÐŸÐŒ ÐÐœÐŽÐžÐž Ð² ÑÐµÑÐµÐœÐžÐµ 1996. ÐŠÐµÐœÑÑ Ð Ð°Ð·Ð²ÐžÑÐžÑ ÐŠÐžÑÑÐŸÐ²ÑÑ
+ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐº IIMK ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ GSDL  ÐŽÐ»Ñ ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÐºÐž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž DL. DL Ð² IIMK - ÐŽÐµÐ¹ÑÑÐ²ÐžÑÐµÐ»ÑÐœÐŸ ÐŒÑÐ»ÑÑÐžÐŒÐµÐŽÐžÐ°, ÑÐžÐ¿ ÐŒÑÐ»ÑÑÐžÐ¿ÑÐ±Ð»ÐžÐºÐ°ÑÐžÐž Ðž Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐŒÑÐ»ÑÑÐžÑÐŸÑÐŒÐ°ÑÐ° Ñ ÐºÐœÐžÐ³Ð°ÐŒÐž, ÐŒÐŸÐœÐŸÐ³ÑÐ°ÑÐžÑÐŒÐž, ÑÐŸÐŸÐ±ÑÐµÐœÐžÑÐŒÐž, Ð¶ÑÑÐœÐ°Ð»Ð°ÐŒÐž, Ð±Ð»ÐŸÐºÐ°ÐŒÐž Ðž ÐŸÐ±ÑÐ°Ð·ÐŸÐ²Ð°ÑÐµÐ»ÑÐœÑÐŒÐž Ð²ÐžÐŽÐµÐŸ, ÑÐ²Ð»ÑÑÑÐžÐŒÐžÑÑÑÐŸÑÐŒÐžÑÑÑÑÐžÐ¹ÑÑ ÑÐ°ÑÑÑÑ ÑÐ°ÑÑÑÑÐžÐ¹ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž. ÐÐžÐŽÐµÐŸ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐœÐŸÐ²ÐµÐ¹ÑÐžÐµ ÐŽÐŸÐ±Ð°Ð²Ð»ÐµÐœÐžÐµ, ÐºÐŸÑÐŸÑÐŸÐµ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°Ð»ÐŸÑÑ ÑÐŸÐ»ÑÐºÐŸ ÐŽÐ»Ñ ÐŸÑÐºÑÑÑÑÑ
+  ÐžÑÑÐŸÑÐœÐžÐºÐŸÐ² Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ Ðž ÐŸÑÐºÑÑÑÑÑ
+ ÑÑÐ°ÐœÐŽÐ°ÑÑÐŸÐ² ÐŽÐ»Ñ ÐµÐ³ÐŸ Ð¿ÐŸÐ»ÐœÐŸÐ³ÐŸ ÑÐµÑ
+ÐœÐŸÐ»ÐŸÐ³ÐžÑÐµÑÐºÐŸÐ³ÐŸ Ð¿ÑÐŸÑÐµÑÑÐ°. }
+
+_ex12t_ [l=ru] {ÐŠÐžÑÑÐŸÐ²Ð°Ñ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° ÐÑÑÐµÑÑÐ²ÐµÐœÐœÑÑ
+ ÐœÐ°ÑÐº, ÐÑÐµÑÐœÐ°ÐŒÑÐºÐžÐ¹ ÐœÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÑÐ¹ Ð£ÐœÐžÐ²ÐµÑÑÐžÑÐµÑ, ÐÐŸÑÐŸÐŽ Ð¥ÐŸÑÐžÐŒÐžÐœÐ° (Ð²ÐŸ Ð²ÑÐµÑÐœÐ°ÐŒÐµ) }
+
+_ex12d_ [l=ru] {Ð­ÑÐŸÑ ÑÑÐ°ÑÑÐŸÐº ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÐŽÐ²Ðµ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž Greenstone."ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° Ðž Ð¢ÐµÐŸÑÐžÑ ÐÐœÑÐŸÑÐŒÐ°ÑÐžÐž" ÑÐŸÑÑÐŸÑÑ ÐžÐ· ÑÑÐ°ÑÐµÐ¹ ÐŸÑÐœÐŸÑÐžÑÐµÐ»ÑÐœÐŸ ÐÐœÑÐŸÑÐŒÐ°ÑÐžÐž Ðž ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ²ÐµÐŽÐµÐœÐžÐµ ÐŸÑ ÐÐžÐ±Ð»ÐžÐŸÑÐµÑÐœÐŸÐ³ÐŸ ÐÐ»ÑÐ±Ð°, FESAL, Ðž ÐÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÑÑ
+ Ð±ÑÐ»Ð»ÐµÑÐµÐœÐµÐ¹ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐÑÑÐµÑÑÐ²ÐµÐœÐœÑÑ
+ ÐœÐ°ÑÐº Ñ 1998. "ÐÐ±ÐŸÑÑÐŽÐŸÐ²Ð°ÐœÐžÐµ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž" ÐžÐŒÐµÐµÑ ÑÐŸÑÐŸÐ³ÑÐ°ÑÐžÐž ÐŸÐ±ÐŸÑÑÐŽÐŸÐ²Ð°ÐœÐžÑ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž Ð² ÐœÐµÐºÐŸÑÐŸÑÑÑ
+ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°Ñ
+  Ð¡ÐšÐ, Ð¡ÐžÐœÐ³Ð°Ð¿ÑÑÐ°, Ð¢Ð°ÐžÐ»Ð°ÐœÐŽÐ° Ðž ÐÑÐµÑÐœÐ°ÐŒÐ°. Ð­ÑÐŸÑ ÑÑÐ°ÑÑÐŸÐº ÐŸÐ±ÑÐ»ÑÐ¶ÐµÐ²Ð°ÐµÑÑÑ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐŸÐ¹ ÐÑÑÐµÑÑÐ²ÐµÐœÐœÑÑ
+ ÐœÐ°ÑÐº, VNU-HCM.}
+
+_ex13t_ [l=ru] {ÐŠÐµÐœÑÑ ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÐž SRM}
+
+_ex13d_ [l=ru] {ÐÐµÐŒÐŸÐœÑÑÑÐ°ÑÐžÐŸÐœÐœÐ°Ñ Ð²ÐµÑÑÐžÑ CD-ROM ÑÐŸ ÑÑÑÐ»ÐºÐ°ÐŒÐž ÐœÐ° Ð»ÐžÑÐµÑÐ°ÑÑÑÑ Ð¿ÐŸ ÑÐŸÑÐžÐ°Ð»ÑÐœÐŸÐ¹ ÐŒÐµÑÐŸÐŽÐŸÐ»ÐŸÐ³ÐžÐž ÐžÑÑÐ»ÐµÐŽÐŸÐ²Ð°ÐœÐžÑ. ÐÑÐžÐ±Ð»ÐžÐ·ÐžÑÐµÐ»ÑÐœÐŸ 1 500 ÑÑÑÐ»ÐŸÐº (53 000 ÐœÐ° CD-ROM) ÑÐ°ÑÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÑ Ð±ÐŸÐ»ÐµÐµ ÑÐµÐŒ ÐœÐ° ÐŽÐ²Ðµ Ð¿ÐŸÐŽÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž: 1958-1990 Ðž 1991-2004. ÐŠÐµÐœÑÑ ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÐž SRM - ÑÐ°ÑÑÑ ÐÐœÑÑÐžÑÑÑÐ° ÐÐžÐŽÐµÑÐ»Ð°ÐœÐŽÐŸÐ² ÐÐ°ÑÑÐœÑÑ
+ ÐÐœÑÐŸÑÐŒÐ°ÑÐžÐŸÐœÐœÑÑ
+ Ð£ÑÐ»ÑÐ³ (NIWI)." }
+
+_ex14t_ [l=ru] {ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐ°Ñ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ° Ð ÐµÑÐ¿ÑÐ±Ð»ÐžÐºÐž ÐÐžÑÐ³ÐžÐ·ÑÑÐ°Ðœ}
+
+_ex14d_ [l=ru] {ÐÐžÑÐ³ÐžÐ·ÑÐºÐžÐ¹ ÑÐ¿ÐŸÑ ÐÐ°ÐœÐ°Ñ - ÑÐµÐŽÐºÐ°Ñ ÐºÐœÐžÐ³Ð° ÐžÐ· ÐÐ°ÑÐžÐŸÐœÐ°Ð»ÑÐœÐŸÐ¹ ÐÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐÐžÑÐ³ÐžÐ·ÑÑÐ°ÐœÐ°; Ðž ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐŽÐžÑÑÐµÑÑÐ°ÑÐžÐ¹ Ðž ÐºÑÐ°ÑÐºÐžÑ
+ ÐŸÐ±Ð·ÐŸÑÐŸÐ² ÐºÐžÑÐ³ÐžÐ·ÑÐºÐžÑ
+ ÑÑÐµÐœÑÑ
+ Ð¿ÐŸ ÑÐ°ÐºÐžÐŒ ÑÐµÐŒÐ°ÐŒ ÐºÐ°Ðº Ð ÐµÑÐ¿ÑÐ±Ð»ÐžÐºÐ° ÐÐžÑÐ³ÐžÐ·ÑÑÐ°Ðœ.}
+
+#######################################################################
+
+package support
+
+_t109_ [l=ru] {ÐÐŸÐŽÐŽÐµÑÐ¶ÐºÐ° ÐÑÐžÐœÑÑÐŸÑÐœ.}
+
+_tsupportintro_ [l=ru] {Ð¥ÐŸÑÐžÑÐµ ÐœÐ°ÑÑÐžÑÑÑÑ Ð±ÐŸÐ»ÑÑÐµ ÐŸ ÐÑÐžÐœÑÑÐŸÑÐœ? ÐÐŸÑÐ²ÐžÐ»ÐžÑÑ Ð¿ÑÐŸÐ±Ð»ÐµÐŒÑ ÑÐ²ÑÐ·Ð°ÐœÐœÑÐµ Ñ ÑÑÑÐ°ÐœÐ°Ð²ÐºÐŸÐ¹ ÐžÐ»Ðž Ð¿ÐŸÑÑÑÐŸÐµÐœÐžÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÐž? ÐÑÑÑ ÐŒÐœÐŸÐ³ÐŸ ÐžÑÑÐŸÑÐœÐžÐºÐŸÐ² Ð¿ÐŸÐŒÐŸÑÐž ÐŽÐ»Ñ ÐÐ°Ñ, Ðº ÐºÐŸÑÐŸÑÑÐŒ ÐŒÐŸÐ¶ÐœÐŸ ÐŸÐ±ÑÐ°ÑÐžÑÑÑÑ. 
+}
+
+_tfaqh_ [l=ru] {Ð¡Ð¿ÐžÑÐŸÐº ÑÐ°ÑÑÐŸ Ð·Ð°ÐŽÐ°Ð²Ð°ÐµÐŒÑÑ
+ Ð²ÐŸÐ¿ÑÐŸÑÐŸÐ² (Ð§ÐÐÐ)}
+_tfaqb_ [l=ru] {Ð¡Ð¿ÐžÑÐŸÐº Ð§ÐÐÐ ÑÐŸÐŽÐµÑÐ¶ÐžÑ ÑÐ¿ÐžÑÐŸÐº ÐŸÐ±ÑÐžÑ
+ Ð²ÐŸÐ¿ÑÐŸÑÐŸÐ² Ð¿ÐŸ ÐŽÐµÐ¹ÑÑÐ²ÐžÑÐŒ Ð² ÐÑÐžÐœÑÑÐŸÑÐœ,
+Ð²ÐºÐ»ÑÑÐ°Ñ ÐºÐ°Ðº Ð¿ÐŸÐ»ÑÑÐžÑÑ ÑÑÐŸ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ, ÑÑÑÐ°ÐœÐŸÐ²ÐžÑÑ Ðž Ð·Ð°Ð¿ÑÑÑÐžÑÑ ÐµÐ³ÐŸ, 
+Ð° ÑÐ°ÐºÐ¶Ðµ Ð¿ÐŸÑÑÑÐŸÐžÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ.}
+
+_tarchh_ [l=ru] {ÐÑÑ
+ÐžÐ² Ð¿ÐŸÑÑÐŸÐ²ÑÑ
+ ÑÐ°ÑÑÑÐ»ÐŸÐº}
+_tarchb_ [l=ru] {Ð­ÑÐ° ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ ÐÑÐžÐœÑÑÐŸÑÐœ ÑÐŸÐŽÐµÐ¶ÐžÑ Ð²ÑÐµ Ð²ÐŸÐ¿ÑÐŸÑÑ Ðž ÐŸÑÐ²ÐµÑÑ ÐŸÐ¿ÑÐ±Ð»ÐžÐºÐŸÐ²Ð°ÐœÐœÑÐµ Ð¿ÐŸÑÑÐµÐŽÑÑÐ²ÐŸÐŒ ÐŽÐ²ÑÑ
+ ÑÐ¿ÐžÑÐºÐŸÐ² ÑÐ°ÑÑÑÐ»ÐºÐž. ÐÐŸÐžÑÐº Ð² ÑÑÐžÑ
+ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑÑ
+, ÐœÐ° Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐŒ ÑÐ·ÑÐºÐµ, Ñ
+ÐŸÑÐŸÑÐžÐ¹ ÑÐ¿ÐŸÑÐŸÐ± ÐœÐ°Ð¹ÑÐž ÐŸÑÐ²ÐµÑÑ ÐœÐ° Ð²ÐŸÐ¿ÑÐŸÑÑ ÐœÐµ Ð²ÐºÐ»ÑÑÐµÐœÐœÑÐµ Ð² ÑÐ¿ÐžÑÐŸÐº ÑÐ°ÑÑÐŸ Ð·Ð°ÐŽÐ°Ð²Ð°ÐµÐŒÑÑ
+ Ð²ÐŸÐ¿ÑÐŸÑÐŸÐ². ÐÐŸÐ»Ð»ÐµÐºÑÐžÑ ÑÐµÐ³ÑÐ»ÑÑÐœÐŸ ÐŸÐ±ÐœÐŸÐ²Ð»ÑÐµÑÑÑ. 
+}
+
+_tmanualh_ [l=ru] {ÐÐŸÐºÑÐŒÐµÐœÑÐ°ÑÐžÑ ÐÑÐžÐœÑÑÐŸÑÐœ}
+_tmanualb_ [l=ru] {ÐÐŽÐµÑÑ ÑÐœÐµÑÐºÐŸÐ»ÑÐºÐŸ ÑÑÐºÐŸÐ²ÐŸÐŽÑÑÐ² Ðž ÐžÐœÑÑÑÑÐºÑÐžÐ¹ ÐºÐŸÑÐŸÑÑÐµ ÐŸÐ±ÑÑÐœÐŸ Ð²ÐºÐ»ÑÑÐµÐœÑ Ð² ÐÑÐžÐœÑÑÐŸÑÐœ. 
+Ð­ÑÐ° ÑÑÑÐ°ÐœÐžÑÐ° ÐŸÐ±ÐµÑÐ¿ÐµÑÐžÐ²Ð°ÐµÑ ÑÐ²ÑÐ·Ðž Ðº ÐœÐžÐŒ, ÐŒÐœÐŸÐ³ÐžÐµ ÐžÐ· ÐœÐžÑ
+ ÐœÐ° ÐœÐµÑÐºÐŸÐ»ÑÐºÐžÑ
+ ÑÐ·ÑÐºÐ°Ñ
+.}
+
+_tdlbookh_ [l=ru] {ÐÐ°Ðº Ð¿ÐŸÑÑÑÐŸÐžÑÑ ÑÐžÑÑÐŸÐ²ÑÑ ÐºÐŸÐ»Ð»ÐµÐºÑÐžÑ}
+_tdlbookb_ [l=ru] {Ð§ÑÐŸ ÑÐ°ÐºÐŸÐµ ÑÐžÑÑÐŸÐ²Ð°Ñ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐ°? ÐÐ°Ðº ÐŸÐœÐ° Ð²ÑÐ³Ð»ÑÐŽÐžÑ? ÐÑÐºÑÐŽÐ° Ð² ÐœÐµÐ¹ Ð¿ÐŸÑÐ²Ð»ÑÐµÑÑÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ? ÐÐ°Ðº ÐŸÐ±ÑÐµÐŽÐžÐœÐžÑÑ ÐžÑ
+ Ð²ÐŒÐµÑÑÐµ? ÐÐ°Ðº ÐœÐ°ÑÐ°ÑÑ? ÐÐ°ÐœÐœÐ°Ñ ÐºÐœÐžÐ³Ð° ÐŸÑÐ²ÐµÑÐ°ÐµÑ ÐœÐ° ÑÑÐž Ðž ÐŒÐœÐŸÐ³ÐžÐµ ÐŽÑÑÐ³ÐžÐµ Ð²ÐŸÐ¿ÑÐŸÑÑ Ð² Ð¿ÐŸÐœÑÑÐœÐŸÐ¹ "ÐÐ°Ðº ÑÑÐŸ?" Ðž Ð¿ÑÑÐŒÐŸÐ¹ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ¹ ÐŒÐ°ÐœÐµÑÐµ. ÐÐœÐžÐ³Ð° ÑÐ°ÐºÐ¶Ðµ ÐŸÐ¿ÐžÑÑÐ²Ð°ÐµÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐµ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÐµ ÐÑÐžÐœÑÑÐŸÑÐœ.}
+
+_tmaillisth_ [l=ru] {ÐÐŸÑÑÐŸÐ²Ð°Ñ ÑÐ°ÑÑÑÐ»ÐºÐ° ÐÑÐžÐœÑÑÐŸÑÐœ}
+
+
+_t104_ [l=ru] {ÐÐŒÐµÐµÑÑÑ ÐŽÐ²Ð° ÑÐ¿ÐžÑÐºÐ° ÑÐ».Ð¿ÐŸÑÑÑ Ð¿ÑÐµÐŽÐœÐ°Ð·ÐœÐ°ÑÐµÐœÐœÑÑ
+ Ð³Ð»Ð°Ð²ÐœÑÐŒ ÐŸÐ±ÑÐ°Ð·ÐŸÐŒ ÐŽÐ»Ñ ÐŸÐ±ÑÑÐ¶ÐŽÐµÐœÐžÑ Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÑÐžÑÑÐŸÐ²ÐŸÐ¹ Ð±ÐžÐ±Ð»ÐžÐŸÑÐµÐºÐž ÐÑÐžÐœÑÑÐŸÑÐœ. ÐÑÐ»Ðž ÐÑ Ð°ÐºÑÐžÐ²ÐœÑÐ¹ Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»Ñ ÐÑÐžÐœÑÑÐŸÑÐœ ÑÐ°ÑÑÐŒÐŸÑÑÐžÑÐµ Ð²ÐºÐ»ÑÑÐµÐœÐžÐµ Ð²ÐŸÐ¿ÑÐŸÑÐ° Ð² ÑÐŸÑ ÐžÐ»Ðž ÐžÐœÐŸÐ¹ ÑÐ¿ÐžÑÐŸÐº ÐŽÐ»Ñ ÑÐ»ÑÑÑÐµÐœÐžÑ Ð¿ÐŸÐŒÐŸÑÐž
+Ðž ÐŸÐ±ÑÑÐ¶ÐŽÐµÐœÐžÑ. <B>ÐÐŸÐ¶Ð°Ð»ÑÐ¹ÑÑÐ° Ð¿ÑÐŸÐ²ÐµÑÑÑÐµ ÐŽÑÑÐ³ÐžÐµ ÐžÑÑÐŸÑÐœÐžÐºÐž ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž</b>, ÐŸÑÐŸÐ±ÐµÐœÐœÐŸ 
+<href ="http://www.nzdl.org/gsarchives">ÐÑÑ
+ÐžÐ² Ð¿ÐŸÑÑÐŸÐ²ÑÑ
+ ÑÐ°ÑÑÑÐ»ÐŸÐº</a>, <b> Ð¿ÐµÑÐµÐŽ ÐŸÑÐ¿ÑÐ°Ð²Ð»ÐµÐœÐžÐµÐŒ Ð²ÐŸÐ¿ÑÐŸÑÐ° Ð¿ÐŸ ÑÐ».Ð¿ÐŸÑÑÐµ, ÑÑÐŸÐ±Ñ Ð²ÐœÐµÑÑÐž ÐµÐ³ÐŸ Ð² ÑÐ¿ÐžÑÐŸÐº</b >.}
+
+_t105_ [l=ru] {Ð¡Ð¿ÐžÑÐŸÐº Ð¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÐµÐ»ÐµÐ¹ ÐÑÐžÐœÑÑÐŸÑÐœ}
+
+_t106_ [l=ru] {Ð­ÑÐŸ ÑÐ¿ÐžÑÐŸÐº ÐŽÐ»Ñ ÐŸÐ±ÑÐžÑ
+ ÐŽÐžÑÐºÑÑÑÐžÐ¹ Ð¿ÐŸ ÐÑÐžÐœÑÑÐŸÑÐœ. Ð§ÑÐŸÐ±Ñ Ð¿ÐŸÑÐ»Ð°ÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÐµ Ð² ÑÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº , ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÑÑÐŸÑ Ð°ÐŽÑÐµÑ <a
+href="mailto:greenstone-users@list.scms.waikato.ac.nz">greenstone-users@list.scms.waikato.ac.nz</a>. }
+
+_t107_ [l=ru] {Ð¡Ð¿ÐžÑÐŸÐº ÑÐ°Ð·ÑÐ°Ð±ÐŸÑÑÐžÐºÐŸÐ² ÐÑÐžÐœÑÑÐŸÑÐœ}
+
+_t108_ [l=ru] {Ð­ÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÐµÑ
+ÐœÐžÑÐµÑÐºÑÑ ÐŽÐžÑÐºÑÑÑÐžÑ Ð»ÑÐŽÐµÐ¹ ÑÐ°Ð·Ð²ÐžÐ²Ð°ÑÑÐžÐŒÐž Ðž ÐŒÐŸÐŽÐžÑÐžÑÐžÑÑÑÑÐžÐŒÐž ÐÑÐžÐœÑÑÐŸÑÐœ. ÑÑÐŸÐ±Ñ Ð¿ÐŸÑÐ»Ð°ÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÐµ Ð² ÑÑÐŸÑ ÑÐ¿ÐžÑÐŸÐº, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÑÐ»ÐµÐŽÑÑÑÐžÐ¹ Ð°ÐŽÑÐµÑ <a
+href="mailto:greenstone-devel@list.scms.waikato.ac.nz">greenstone-devel@list.scms.waikato.ac.nz</a>. <strong>ÐÑÐžÐŒÐµÑÐ°ÐœÐžÐµ:</strong>
+ÐÑÐµÐ¶ÐŽÐµ ÑÐµÐŒ Ð¿ÐŸÑÐ»Ð°ÑÑ ÑÐŸÐŸÐ±ÑÐµÐœÐžÐµ ÐÐ°ÐŒ ÑÐ»ÐµÐŽÑÐµÑ Ð·Ð°ÑÐµÐ³ÐžÑÑÑÐžÑÐŸÐ²Ð°ÑÑÑÑ Ð² ÑÑÐŸÐŒ ÑÐ¿ÐžÑÐºÐµ.
+}
+
+_tsuppformh_ [l=ru] {ÐÐµÐ±-ÐŸÑÐžÐµÐœÑÐžÑÐŸÐ²Ð°ÐœÐœÐ°Ñ ÑÐŸÑÐŒÐ° Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž}
+_tsuppformb_ [l=ru] {<b>Ð Ð¿ÐŸÑÐ»ÐµÐŽÐœÐµÐµ ÐŸÐ±ÑÐ°ÑÐµÐœÐžÐµ</b>, ÐµÑÐ»Ðž ÐÑ ÐœÐµÑÐ¿ÐŸÑÐŸÐ±ÐœÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ Ð¿ÐŸÑÑÐŸÐ²ÑÐµ ÑÐ°ÑÑÑÐ»ÐºÐž Ð¿ÐŸ ÐœÐµÐºÐŸÑÐŸÑÑÐŒ Ð¿ÑÐžÑÐžÐœÐ°ÐŒ, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐ¹ÑÐµ ÑÑÑ ÑÐµÑÑ Ð² ÐºÐ°ÑÐµÑÑÐ²Ðµ ÐŸÑÐœÐŸÐ²ÐœÐŸÐ¹ ÑÐŸÑÐŒÑ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž, ÑÑÐŸÐ±Ñ Ð¿ÐŸÑÐ»Ð°ÑÑ Ð²ÐŸÐ¿ÑÐŸÑ ÐºÐŸÐŒÐ°ÐœÐŽÐµ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐºÐž ÐÑÐžÐœÑÑÐŸÑÐœ.}
+
+_ttrainingcourseh_ [l=ru] {ÐÐ±ÑÑÐµÐœÐžÐµ ÑÐ°Ð±ÐŸÑÑ Ñ ÐÑÐžÐœÑÑÐŸÑÐœ}
+
+# -- Missing translation: _ttrainingcourse_
+
+
+######################################################################
+# 'preferences' page
+package preferences
+######################################################################
+
+
+#------------------------------------------------------------
+# text macros
+#------------------------------------------------------------
+
+_textpresentationprefs_ [l=ru] {ÐÐ°ÑÑÑÐŸÐ¹ÐºÐž ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ°}
+_textlanguage_ [l=ru] {Ð¯Ð·ÑÐº ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ°:}
+_textencoding_ [l=ru] {ÐÐŸÐŽÐžÑÐŸÐ²ÐºÐ°:}
+_textformat_ [l=ru] {Ð€ÐŸÑÐŒÐ°Ñ ÐžÐœÑÐµÑÑÐµÐ¹ÑÐ°:}
+_textgraphical_ [l=ru] {ÐÑÐ°ÑÐžÑÐµÑÐºÐžÐ¹}
+_texttextual_ [l=ru] {TÐµÐºÑÑÐŸÐ²ÑÐ¹}
Index: /other-projects/trunk/greenorg/macros/spanish.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/spanish.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/spanish.dm	(revision 14149)
@@ -0,0 +1,475 @@
+package Global
+
+_t17_ [l=es] {Los recursos disponibles en la pÃ¡gina <a href="_httppagex_(download)">Bajar archivos y programas</a> son administrados por <a href="http://sourceforge.net">Sourceforge</a>.}
+
+_textimagepref_ [l=es] {PÃ¡gina de Preferencias}
+
+_textimagedocs_ [l=es] {Manuales}
+_textimagedownload_ [l=es] {Bajar}
+_textimageexamples_ [l=es] {Ejemplos}
+_textimagesupport_ [l=es] {Soporte}
+
+#------------------------------------------------------------
+# icons
+#------------------------------------------------------------
+
+## "PREFERENCIAS" ## top_nav_button ## cpref ##
+_httpiconcprefof_ [l=es] {_httpimg_/es/cprefof.gif}
+_httpiconcprefon_ [l=es] {_httpimg_/es/cprefon.gif}
+
+
+## "manuales" ## nav_bar_button ## tdocs ##
+_httpicontdocsof_ [l=es] {_httpimg_/es/tdocsof.gif}
+_httpicontdocson_ [l=es] {_httpimg_/es/tdocson.gif}
+
+## "bajar" ## nav_bar_button ## tdl ##
+_httpicontdlof_ [l=es] {_httpimg_/es/tdlof.gif}
+_httpicontdlon_ [l=es] {_httpimg_/es/tdlon.gif}
+
+## "ejemplos" ## nav_bar_button ## texmpl ##
+_httpicontexmplof_ [l=es] {_httpimg_/es/texmplof.gif}
+_httpicontexmplon_ [l=es] {_httpimg_/es/texmplon.gif}
+
+## "soporte" ## nav_bar_button ## tsup ##
+_httpicontsupof_ [l=es] {_httpimg_/es/tsupof.gif}
+_httpicontsupon_ [l=es] {_httpimg_/es/tsupon.gif}
+
+# -- Missing translation: _textpagemoved_
+# -- Missing translation: _textredirect_
+
+#######################################################################
+
+package home
+
+_t1_ [l=es] {Acerca de Greenstone}
+
+_t2_ [l=es] {Greenstone es un conjunto de programas de software diseÃ±ado para crear y distribuir colecciones digitales, proporcionando asÃ­ una nueva forma de organizar y publicar la informaciÃ³n a travÃ©s de Internet o en forma de CD-ROM. Greenstone ha sido producido por el <b>Proyecto Biblioteca Digital de Nueva Zelanda</b> con sede en la <b>Universidad de Waikato</b> y ha sido desarrollado y distribuido en colaboraciÃ³n con la <b>UNESCO</b> y la <b>ONG de InformaciÃ³n para el Desarrollo Humano</b> con sede en Amberes, BÃ©lgica. Es un software <b>abierto en varios idiomas</b> distribuido conforme a los tÃ©rminos de la Licencia PÃºblica General GNU.}
+
+_namur_ [l=es] {El proyecto Greenstone ha sido el sÃ©ptimo en recibir el <a href="http://www.info.fundp.ac.be/~jbl/IFIP/award.html">premio bienal Namur</a>, el cual es un reconocimiento a los esfuerzos internacionales por crear conciencia acerca de las implicaciones sociales de las tecnologÃ­as de informaciÃ³n.}
+
+_t3_ [l=es] {UNESCO lleva a cabo talleres de capacitaciÃ³n regionales sobre el uso de Greenstone. En el 2003 estos se llevaron a cabo en <a href="_httppagex_(report)">Bangalore, India</a> en agosto, en Dakar, Senegal en septiembre y en <a href="_httppagex_(reportSuva)">Suva, Fiji</a> en noviembre. <a href="http://sourceforge.net/project/showfiles.php?group_id=12123&release_id=202808">AquÃ­</a> pueden encontrar un paquete con todos los materiales que se prepararon para el taller de trabajo de Suva: lecturas, prÃ¡cticas de laboratorio, documentos, archivos de prueba, etc. El paquete se enfoca a la construcciÃ³n de colecciones por medio de la Interfaz de Bibliotecario. Por favor, le invitamos a que lo utilice con fines didÃ¡cticos para aprender o enseÃ±ar a usar Greenstone.}
+_t3.save_ {<a href="http://sourceforge.net/project/showfiles.php?group_id=12123&release_id=202808">Here</a> is a package of all material that we prepared for the Suva workshop: lectures, labs, documents, test files, etc.  It focuses on building collections with the Librarian Interface.
+Please feel free to use it for learning -- or teaching! -- Greenstone.
+}
+
+_cdrom260_ [l=es] {El UNESCO CD-ROM contiene Greenstone 2.60, mÃ¡s toda la documentaciÃ³n (InglÃ©s/FrancÃ©s/EspaÃ±ol/Ruso), mÃ¡s 11 ejemplos documentados de colecciones, mÃ¡s software asociado como Java e ImageMagick, disponible en Jean-Claude Dauphin (jc.dauphin@unesco.org) o Susannah Farey (s.farey@unesco.org). 
+Usuarios CDS/ISIS: download las versiones actualizadas de a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/collect.cfg">collect\\isis-e\\etc\\collect.cfg</a> y <a href="http://www.cs.waikato.ac.nz/~mdewsnip/greenstone/ISISPlug.pm">perllib\\plugins\\ISISPlug.pm</a> para fijar problemas de construccion de colecciones CDS/ISIS con Greenstone 2.60.}  # Updated 17-Aug-2006
+
+# -- Missing translation: _imarkonline_
+ 
+# -- Missing translation: _greenstone270w_
+
+_upgradeyourgreenstoneinstallation_ [l=es] {Si usted estÃ¡ ejecutando el servidor Biblioteca local en Windows, puede descargar un pequeÃ±o paquete para actualizar a Greenstone versiÃ³n 2.52. <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.51-locallibrary-to-2.52-upgrade.zip?download">ActualizaciÃ³n para Greenstone 2.51</a>, o <a href="http://prdownloads.sourceforge.net/greenstone/gsdl-2.50-locallibrary-to-2.52-upgrade.zip?download">ActualizaciÃ³n para Greenstone 2.50</a>. Si usted estÃ¡ actualizando un CD-ROM de UNESCO con la versiÃ³n 2.50, debe borrar el archivo macros\\home.dm y renombrar el archivo macros\\home.dm.bak  como macros\\home.dm despuÃ©s de que la actualizaciÃ³n haya terminado.}
+
+# -- Missing translation: _glp262_
+
+# -- Missing translation: _remotegreenstone_
+
+_support_ [l=es] {Hemos reorganizado nuestro <a href="_gwcgi_?a=p&p=support">Support page</a> y hemos incluÃ­do informaciÃ³n adicional sobre donaciones al proyecto Greenstone, contrato de investigaciÃ³n y apoyo comercial.}
+
+_gs3proto_ [l=es] {Greenstone 3 es un completo rediseÃ±o de Greenstone, que estÃ¡ siendo implementado en la actualidad. El estÃ¡ndar Greenstone (Greenstone 2) sigue siendo la mejor elecciÃ³n para la mayorÃ­a de usuarios. Greenstone 3 servirÃ¡ las colecciones existentes sin necesidad de hacer cambios en las mismas, por lo que no hay peligro de obsolescencia por continuar usando Greenstone 2. <a href="http://www.greenstone.org/greenstone3.html">PÃ¡gina principal de Greenstone 3</a>.}
+
+# -- Missing translation: _surveyheading_
+
+_survey_ [l=es] {Aunque la fecha lÃ­mite ya se venciÃ³, todavÃ­a puede ser Ãºtil si usted completa la encuesta de usuario <a href="_surveylink_">. Los resultados de la encuesta se publicarÃ¡n aquÃ­ en breve}
+
+
+_t4_ [l=es] {<a href="http://sourceforge.net/projects/greenstone/">Bajar</a> Greenstone v2.41. La Interfaz de la Biblioteca Digital Greenstone (GLI por sus siglas en inglÃ©s) es un componente frontal fÃ¡cil de usar que le da acceso a todas las funciones de Greenstone para la construcciÃ³n de colecciones y que ha sido probado y depurado ampliamente. Si todavÃ­a no ha trabajado con ella, este es un excelente momento para hacerlo (y si en algÃºn momento tuvo problemas con una versiÃ³n anterior, lo instamos a que pruebe esta nueva versiÃ³n). Greenstone 2.41 tambiÃ©n incluye un nuevo plugin para el procesamiento de bases de datos CDS/ISIS, la capacidad de exportar varias colecciones a un CD-ROM y muchos otros arreglos y mejoras.}
+
+_t5_ [l=es] {Una de las partes mÃ¡s Ãºtiles de Greenstone es contar con un archivo de configuraciÃ³n para crear su propia colecciÃ³n. Para ayudarlo a conocer la forma de hacer esto, se han colocado varias colecciones de muestra totalmente documentadas en <a href="http://nzdl.org">nzdl.org</a>, las cuales explican en la pÃ¡gina principal de cada colecciÃ³n la forma en que fueron armadas.}
+
+_t6_ [l=es] {La interfaz completa de Greenstone y toda la documentaciÃ³n estÃ¡n disponibles en <b>inglÃ©s</b>, <b>francÃ©s</b>, <b>espaÃ±ol</b>, <b>ruso</b> y <b>kazako</b>. Greenstone tambiÃ©n cuenta con interfaces en muchos <a href="_httpwikiintn_">otros idiomas</a>. Actualmente estamos buscando <a href="_httpwikiintnmaintainers_">voluntarios</a> para aÃ±adir nuevas interfaces de idioma y dar mantenimiento a las que ya existen.}
+
+_t7_ [l=es] {El objetivo del software Greenstone es dar el potencial de construir sus propias bibliotecas digitales a los usuarios, especialmente en universidades, bibliotecas y otras instituciones de servicio pÃºblico. Las bibliotecas digitales estÃ¡n cambiando radicalmente la manera en que se adquiere y disemina la informaciÃ³n en las comunidades e instituciones que participan en UNESCO, en los campos de educaciÃ³n ciencia y cultura en todo el mundo, y especialmente en los paÃ­ses en desarrollo. Esperamos que este software animarÃ¡ el desarrollo efectivo de bibliotecas digitales para compartir informaciÃ³n y ponerla en el dominio pÃºblico. MÃ¡s informaciÃ³n puede encontrarse en el libro <a href="http://www.nzdl.org/howto">How to build a digital library</a>, escrito por dos de los miembros del grupo del proyecto.}
+
+_t8_ [l=es] {Los archivos collect.cfg para muchas de las colecciones que se encuentran en <a href="http://www.nzdl.org">www.nzdl.org</a> estÃ¡n a su disposiciÃ³n <a href="_httpwikicolcfg_">aquÃ­</a>.}
+
+_t9_ [l=es] {El desarrollo y la distribuciÃ³n de este software son el resultado de un acuerdo de cooperaciÃ³n internacional firmado en agosto de 2000 por tres partes. }
+
+_t10_ [l=es] {Proyecto Biblioteca Digital de Nueva Zelanda de la Universidad de Waikato}
+
+_t11_ [l=es] {El software Greenstone naciÃ³ de este proyecto como una iniciativa desarrollada por la SubcomisiÃ³n de Comunicaciones de la ComisiÃ³n Nacional Neozelandesa como parte de la contribuciÃ³n de Nueva Zelanda al programa de la UNESCO.}
+
+_t12_ [l=es] {OrganizaciÃ³n Cultural, CientÃ­fica y Educativa de las Naciones Unidas}
+
+_t13_ [l=es] {La distribuciÃ³n de informaciÃ³n cultural, cientÃ­fica y educativa a travÃ©s del mundo y, particularmente su disponibilidad en los paÃ­ses en vÃ­as de desarrollo, es una de las principales metas de la UNESCO dentro de su Programa de InformaciÃ³n intergubernamental. Es por eso que una tecnologÃ­a de informaciÃ³n y comunicaciÃ³n accesible y adecuada es vista como una herramienta importante dentro de este contexto.}
+
+_t14_ [l=es] {ONG de InformaciÃ³n para el Desarrollo Humano, con sede en Amberes, BÃ©lgica}
+
+_t15_ [l=es] {Este proyecto trabaja con agencias de las Naciones Unidas y otras organizaciones no gubernamentales y se ha forjado una reputaciÃ³n internacional por la digitalizaciÃ³n de documentos de interÃ©s para el desarrollo humano y por ponerlos al alcance de amplios sectores de la poblaciÃ³n sin cargo alguno en los paÃ­ses en vÃ­as de desarrollo y sobre una base que permite la recuperaciÃ³n de costos en los demÃ¡s. }
+
+_t16_ [l=es] {Si usted baja e instala Greenstone junto con las colecciones de muestra estÃ¡ndar, o si lo instala desde el CD-ROM de Greenstone, se verÃ¡ exactamente <a href="http://www.nzdl.org/cgi-bin/democols/library">asÃ­</a>.}
+
+# -- Missing translation: _greenstonewiki_
+
+# -- Missing translation: _southasiasupport_
+
+# -- Missing translation: _gsoaheading_
+
+# -- Missing translation: _gsoa_
+
+
+
+#######################################################################
+package docs
+
+_t80_ [l=es] {DocumentaciÃ³n Greenstone}
+
+#######################################################################
+
+package download
+
+_t18_ [l=es] {Bajar Greenstone}
+
+_t19_ [l=es] {Greenstone es un software abierto distribuido conforme a los tÃ©rminos de la <a href="http://www.gnu.org/copyleft/gpl.html">Licencia PÃºblica General GNU</a>. Corre bajo Windows y UNIX y tanto los binarios como los cÃ³digos fuente se pueden bajar. EstÃ¡ totalmente documentado en inglÃ©s, francÃ©s, espaÃ±ol y ruso.}
+
+_t20_ [l=es] {Elija la versiÃ³n Greenstone que necesite de la lista que aparece a continuaciÃ³n. Cada versiÃ³n le proporciona una interfaz completa en inglÃ©s, francÃ©s, espaÃ±ol o ruso. }
+
+_t21_ [l=es] {Cada versiÃ³n tambiÃ©n incluye la âInterfaz de la Biblioteca Digital Greenstoneâ, una herramienta grÃ¡fica diseÃ±ada para crear bibliotecas digitales que le da acceso a todas las funciones de Greenstone desde una interfaz fÃ¡cil de usar con la que solo tiene que apuntar y hacer click. Para usar esta herramienta usted necesitarÃ¡ un Ambiente de EjecuciÃ³n Java (JRE por sus siglas en inglÃ©s) adecuado. Si aÃºn no la tiene, puede bajarlo haciendo click <a href="http://java.sun.com/j2se/">aquÃ­</a>. La versiÃ³n mÃ¡s reciente actualmente es 1.4.2 (elija el JRE, no el SDK).}
+
+_t22_ [l=es] {VersiÃ³n para Windows}
+
+_t23_ [l=es] {Esta es la versiÃ³n que usted necesita si va a correr Greenstone bajo un ambiente Windows de 32-bits (es decir, Windows 95/98/Me/NT/2000/XP etc.).}
+
+_t24_ [l=es] {Recuerde que Greenstone tambiÃ©n correrÃ¡ bajo un ambiente Windows de 16-bits (es decir Windows 3.1/3.11). No obstante, el programa de instalaciÃ³n que utiliza esta versiÃ³n no funcionarÃ¡ con estas versiones de Windows. Si necesita una versiÃ³n de Greenstone para Windows 3.1/3.11 por favor <a href="_httppagex_(support)">pÃ³ngase en contacto con nosotros</a>. }
+
+_t25_ [l=es] {Mediante esta versiÃ³n usted podrÃ¡ instalar la "biblioteca localâ, la âbiblioteca Webâ o instalar y compilar el cÃ³digo fuente (haga click <a href="_httpwikilocallibrary_">aquÃ­</a> para ver una descripciÃ³n de las diferencias entre la âbiblioteca localâ y la âbiblioteca Webâ). Se le preguntarÃ¡ quÃ© opciÃ³n de biblioteca Greenstone desea instalar. }
+
+_t26_ [l=es] {Esta distribuciÃ³n incluye todo lo que usted necesita para ejecutar Greenstone (incluÃ­da una demostraciÃ³n ya construÃ­da) y a construir nuevas colecciones de Greenstone. Sin embargo, no incluye alguna funcionalidad, la mayoÃ­a como un intento de mantener la distribuciÃ³n tan pequeÃ±a como sea posible. Para ver los detalles de cÃ³mo conseguir esta funcionalidad vea: <a
+href="#packages">below</a> }
+
+_t27_ [l=es] {Esta versiÃ³n utiliza un programa de instalaciÃ³n estÃ¡ndar para Windows. Solamente tiene que bajar el archivo y dar doble click para instalarlo (para mayor informaciÃ³n vea la <a href="_httpguide_(Install,en)">GuÃ­a de InstalaciÃ³n</a>).}
+
+_t28_ [l=es] {VersiÃ³n para UNIX}
+
+_t29_ [l=es] {Esta es la versiÃ³n que se recomienda si va a instalar Greenstone en un ambiente UNIX.}
+
+_t30_ [l=es] {Esta versiÃ³n viene con binarios Linux vinculados estÃ¡ticamente. Sin embargo, tambiÃ©n contiene el cÃ³digo fuente Greenstone para compilarlo en otras formas de UNIX (o en Linux, si prefiere no usar los binarios proporcionados).}
+
+_t31_ [l=es] {Esta versiÃ³n incluye todo lo necesario para correr Greenstone (incluyendo una colecciÃ³n de muestra armada previamente) y crear nuevas colecciones. Sin embargo, algunas funciones no estÃ¡n incluidas, principalmente con el objetivo de mantener la versiÃ³n lo mÃ¡s pequeÃ±a posible. Para mayor informaciÃ³n sobre la forma de obtener las funciones que faltan vea <a href="#packages">mÃ¡s adelante</a>.}
+
+_t32_ [l=es] {Para instalar esta distribuciÃ³n, extraiga el archivo compactado tar y ejecute el script <i>Install.sh</i> desde el directorio <i>gsdl-X.XX-unix/Unix</i> (consulte la <a href="_httpguide_(Install,en)">GuÃ­a de InstalaciÃ³n</a> para instrucciones mÃ¡s detalladas).}
+
+_t33_ [l=es] {VersiÃ³n para Mac OS X}
+
+_t34_ [l=es] {Esta versiÃ³n contiene binarios vinculados dinÃ¡micamente para Mac OS X corriendo en plataformas PowerPC.}
+
+_t35_ [l=es] {Esta versiÃ³n ha sido probada en Mac OS X 10.2.6 y 10.3.2. Incluye los binarios creados previamente y la colecciÃ³n de muestra pre-construida asÃ­ como la Interfaz del Bibliotecario de Greenstone para construir colecciones.}
+
+# -- Missing translation: _tmacinstall_
+_t36_ [l=es] {Ãnicamente cÃ³digo fuente}
+
+_t37_ [l=es] {Esta versiÃ³n contiene el cÃ³digo fuente Greenstone junto con la misma colecciÃ³n de muestra que las versiones descritas arriba (aunque la colecciÃ³n no ha sido armada previamente en esta versiÃ³n).}
+
+_t38_ [l=es] {Esta versiÃ³n no cuenta con un procedimiento de instalaciÃ³n automÃ¡tica (con sÃ³lo ejecutar <i>Install.sh</i> no funcionarÃ¡). A menos que estÃ© seguro de saber lo que estÃ¡ haciendo, es probable que prefiera una de las versiones descritas arriba, las cuales tambiÃ©n contienen el cÃ³digo fuente. Recuerde que usted puede obtener en todo momento una versiÃ³n actualizada del cÃ³digo fuente por medio de <a href="_httpwiki_/Greenstone_CVS">cvs</a>.}
+
+_t39_ [l=es] {Los siguientes paquetes extra pueden bajarse e instalarse junto con la instalaciÃ³n de Greenstone para aÃ±adir funciones que no se incluyen en las versiones descritas arriba.}
+
+# -- Missing translation: _classicpack_
+# -- Missing translation: _classicpackdesc_
+
+_langpack_ [l=es] {Paquete del lenguaje Greenstone}
+
+_langpackdesc_ [l=es] {Este paquete contiene el interfaz a Greenstone en varias versiones en diferentes idiomas; ver <a href="_httpwikiintn_">aquÃ­</a> para mÃ¡s detalles.
+}
+
+_t40_ [l=es] {Paquete Exportar a un CD-ROM}
+
+_t41_ [l=es] {Este paquete habilita la funciÃ³n âExportar a un CD-ROMâ desde la Interfaz de Bibliotecario y desde el Collector. Para poder utilizarla debe tener instalado Greenstone en su computador.}
+
+_t42_ [l=es] {Para instalarlo sÃ³lo descargue el archivo (funcionarÃ¡ con Windows y UNIX con la versiÃ³n 2.52 de Greenstone) y extraiga el archivo zip en el directorio gsdl\\bin\\windows de su Greenstone.}
+
+_t43_ [l=es] {Las siguientes utilerÃ­as han sido desarrolladas para usarlas junto con Greenstone.}
+
+
+_dllearningteachingmaterial_ [l=es] {Los siguientes paquetes le ayudarÃ¡n a aprender mÃ¡s sobre greenstone, y a enseÃ±arlo a otros.}
+
+# -- Missing translation: _tutorialexercises_
+# -- Missing translation: _tutorialsamplefiles_
+# -- Missing translation: _tutorialexercisesmultimediafiles_
+
+# -- Missing translation: _dltutorialexercisesdesc_
+
+_teachingmaterial_ [l=es] {Material de enseÃ±anza}
+_1day_ [l=es] {(1 dÃ­a)}
+_3day_ [l=es] {(3 dÃ­as)}
+_4day_ [l=es] {(4 dÃ­as)}
+
+_dlteachingmaterialdesc_ [l=es] {Paquetes de material preparado para varios talleres de Greenstone; ver detalles en <a href="_httpwikiworkshops_">here</a>.}
+
+_documentedexamplecollections_ [l=es] {Colecciones de ejemplo documentadas}
+# -- Missing translation: _dldocumentedexamplecollectionsdesc_
+
+_t44_ [l=es] {El Organizador}
+
+_t45_ [l=es] {El Organizador es una aplicaciÃ³n Windows que se usa para generar automÃ¡ticamente muchos de los archivos de configuraciÃ³n (metadata.xml, sub.txt, etc.) necesarios para crear complejas colecciones Greenstone.}
+
+_t46_ [l=es] {Para instalarlo sÃ³lo baje y haga doble click en el archivo ejecutable. }
+
+
+#######################################################################
+
+package examples
+
+_t47_ [l=es] {Ejemplos de Greenstone en acciÃ³n}
+
+_t48_ [l=es] {Proyecto Biblioteca Digital de Nueva Zelanda}
+
+_t49_ [l=es] {Un sitio muestra desarrollado por los creadores de Greenstone, el Proyecto Biblioteca Digital de Nueva Zelanda. Este sitio contiene diferentes colecciones con temas que van desde las humanidades hasta informes tÃ©cnicos de informÃ¡tica y colecciones muestra de documentos chinos y Ã¡rabes. }
+
+_t50_ [l=es] {Biblioteca Digital Rusa }
+
+_t51_ [l=es] {Un sitio creado por una dependencia del gobierno regional de la RepÃºblica AutÃ³noma de Mari-El en la FederaciÃ³n Rusa, el cual contiene varias colecciones en ruso.}
+
+_t52_ [l=es] {Proyecto Gutenberg}
+
+_t53_ [l=es] {El Proyecto Gutenberg es un proyecto continuo que busca producir y distribuir ediciones electrÃ³nicas gratuitas de literatura, el cual contiene actualmente mÃ¡s de 3,700 tÃ­tulos que van desde Shakespeare hasta Dickens y las hermanas BrontÃ«.  Este sitio es mantenido por Ibiblio, uno de los sitios espejo originales del proyecto Gutenberg, y utiliza Greenstone para dar acceso a la colecciÃ³n completa en una forma que permita buscar en ella fÃ¡cilmente. }
+
+_t54_ [l=es] {Universidad de Ciencias Aplicadas de Stuttgart}
+
+_t55_ [l=es] {Hochschule der Medien, una biblioteca digital de âInformaciÃ³n y Mediaâ creada por la Universidad de Ciencias Aplicadas de Stuttgart, Alemania.}
+
+_t56_ [l=es] {Archivo del Colegio Gresham}
+
+_t57_ [l=es] {Una biblioteca digital creada en el Colegio Gresham de Londres, Inglaterra.}
+
+_t58_ [l=es] {Centro para el Estudio de Bibliotecas Digitales}
+
+_t59_ [l=es] {Universidad de Texas A&M â Un sitio de investigaciÃ³n de bibliotecas digitales que contiene las colecciones prototipo de Greenstone con un Ã©nfasis especial en Flora Digital. }
+
+_t60_ [l=es] {Biblioteca Digital de la Universidad de PekÃ­n}
+
+_t61_ [l=es] {Dos colecciones experimentales creadas por la Universidad de PekÃ­n.}
+
+_t62_ [l=es] {InvestigaciÃ³n para la RecuperaciÃ³n de InformaciÃ³n Musical}
+
+_t63_ [l=es] {PÃ¡gina virtual del instituto de investigaciÃ³n para la recuperaciÃ³n de informaciÃ³n musical. }
+
+_t64_ [l=es] {Ãlbum fotogrÃ¡fico}
+
+_t65_ [l=es] {Una colecciÃ³n de fotografÃ­as tomadas por <a href="mailto:gordon.paynter@ucr.edu">Gordon Paynter</a>.}
+
+_t66_ [l=es] {Colecciones especiales del Consorcio de Bibliotecas de InvestigaciÃ³n de Washington.}
+
+_t67_ [l=es] {Material digital proveniente de las colecciones especiales de las ocho universidades de WRLC en Washington, D.C., Estados Unidos.}
+
+_t68_ [l=es] {Archivos de Mano de Obra de la India.}
+
+_t69_ [l=es] {Un proyecto de colaboraciÃ³n entre el Instituto Nacional del Trabajo V.V. Giri y la AsociaciÃ³n de Historiadores de Mano de Obra de la India. El objetivo de los Archivos de Mano de Obra India es preservar y poner al alcance de la gente los documentos que se conservan sobre la clase trabajadora de la India. }
+
+_t70_ [l=es] {Colecciones de Muestra del NCSI.}
+
+_t71_ [l=es] {Colecciones de muestra creadas por estudiantes y personal del Centro Nacional de InformÃ¡tica, Instituto HindÃº de Ciencias en Bangalore, India. Muchas de estas colecciones incluyen contenidos en hindi y kannada. }
+
+_t72_ [l=es] {JardÃ­n BotÃ¡nico de Nueva York}
+
+_t73_ [l=es] {Proyecto de digitalizaciÃ³n de libros raros de la Biblioteca LuEsther T. Mertz del JardÃ­n BotÃ¡nico de Nueva York. }
+
+_t74_ [l=es] {ColecciÃ³n Digital de Puentes de la Universidad de Lehigh}
+
+_t75_ [l=es] {Una colecciÃ³n que contiene treinta libros acerca de puentes, todos los cuales se publicaron entre 1811 y 1899. La colecciÃ³n fue creada en la Universidad de Lehigh, Pennsylvania, y presenta una interfaz de usuario sumamente personalizada.}
+
+_t76_ [l=es] {Primeras ediciones de la mÃºsica de Federico Chopin}
+
+_t77_ [l=es] {Una colecciÃ³n de imÃ¡genes digitales de las primeras ediciones impresas de las composiciones musicales de Federico Chopin. La colecciÃ³n fue creada por la Biblioteca de la Universidad de Chicago y, una vez terminada, incluirÃ¡ mÃ¡s de 400 ediciones. El archivo de configuraciÃ³n de la colecciÃ³n Greenstone para esta colecciÃ³n tambiÃ©n ha sido puesto a disposiciÃ³n del pÃºblico y puede bajarse haciendo click <a href="http://chopin.lib.uchicago.edu/gsdl/collect/chopin/etc/collect.cfg">aquÃ­</a>.}
+
+_t78_ [l=es] {Biblioteca PÃºblica de Slavonski Brod}
+
+_t79_ [l=es] {Proyecto piloto de digitalizaciÃ³n de la colecciÃ³n de estudios locales de la Biblioteca PÃºblica de Slavonski Brod, Croacia.}
+
+_ex1t_ [l=es] {Mirabilia Vicomercati}
+
+_ex1d_ [l=es] {Mirabilia Vicomercati es un proyecto dirigido por la Biblioteca PÃºblica de Vimercate (MilÃ¡n, Italia), cuyo principal objetivo es la digitalizaciÃ³n de las fuentes primarias de la historia local. IncluirÃ¡ varias colecciones â fotografÃ­as, postales, mapas, texto, referencias y multimedia â para promocionar, preservar y poner al alcance de la gente la memoria histÃ³rica de Vimercate y su territorio.}
+
+_ex2t_ [l=es] {ColecciÃ³n Digital Argus de la Universidad de Wesley, Illinois}
+
+_ex2d_ [l=es] {El periÃ³dico The Argus de la Universidad de Wesley, Illinois, se ha publicado bajo supervisiÃ³n de los estudiantes desde 1894. Esta colecciÃ³n digital es parte de un proyecto continuo por preservar y dar acceso a los volÃºmenes de Argus publicados desde 1894 hasta el 2000.}
+
+_ex3t_ [l=es] {Derechos Humanos en Argentina}
+
+_ex3d_ [l=es] {Este sitio contiene documentos, fotografÃ­as y libros con los archivos de niÃ±os secuestrados durante la dictadura de 1976 a 1983, leyes sobre identidad, informaciÃ³n relacionada con los procesos judiciales y muchos otros temas. Fue creado por la SecretarÃ­a de Derechos Humanos de Argentina bajo la ComisiÃ³n Nacional por el Derecho a la Identidad (CONADI), la cual lucha por los derechos que una persona tiene de conocer su propia identidad â particularmente cuando sus padres han desaparecido.}
+
+_ex4t_ [l=es] {Biblioteca Digital del Conjunto de Bibliotecas de la Universidad de Auburn}
+
+_ex4d_ [l=es] {Este sitio contiene dos colecciones Greenstone. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=postcard">La colecciÃ³n Tarjetas Postales de Alabama</a> contiene mÃ¡s de 300 postales de edificios, escenarios naturales, eventos y otras estampas de diversas ciudades y pueblos del estado de Alabama a principios del siglo XX. Estas imÃ¡genes se clasifican por lugar y tÃ­tulo. <a href="http://diglib.auburn.edu/gsdl/cgi-bin/library?site=localhost&a=p&p=about&c=alauths">La colecciÃ³n Autores de Alabama</a> contiene informaciÃ³n acerca de los Autores del estado de Alabama del siglo XX, y es mantenida y actualizada por la AsociaciÃ³n de Bibliotecas de Alabama. Esta colecciÃ³n se iniciÃ³ en forma de documento impreso escrito en WordPerfect 5.2 y ha pasado por varias iteraciones antes de hacerla completamente utilizable por parte de Greenstone.}
+
+_ex5t_ [l=es] {ColecciÃ³n de mÃºsica impresa de la Biblioteca Estatal de Tasmania}
+
+_ex5d_ [l=es] {Este sitio pone a su disposiciÃ³n cerca de doscientos artÃ­culos de los ricos fondos documentales de mÃºsica impresa que forman parte de las Colecciones Patrimoniales de la Biblioteca Estatal de Tasmania. Abarcan un periodo que va de la dÃ©cada de 1840 a la dÃ©cada de 1930 e incluyen piezas para piano y otros instrumentos, arreglos para banda y canciones de todo tipo: popular, religioso, patriÃ³tico e incluso canciones escritas para animar a los turistas a visitar Tasmania.}
+
+_ex6t_ [l=es] {Base dedatos para publicaciones del Instituto Indio de Ciencia}
+
+_ex6d_ [l=es] {El Instituto Indio de Ciencia, Bangalore - 560012, Karnataka, India es una instituciÃ³n de prmera lÃ­nea en investigaciÃ³n y  enseÃ±anza avanzadas, con mÃ¡s de 2000 investigadores activos trabajando en casi todas las fronteras de la ciencia y la tecnologÃ­a. Fundada en 1909 por J.N. Tata, el Instituto publica cerca de 2000 publicaciones incluyendo artÃ­culos en revistas, publicaciÃ³n de conferencias, patentes, informes, libros, capÃ­tulos de libros cada aÃ±o de acuerdo con este estudio. Aqui se hace un esfuerzo para compilar estas publicaciones a partir de varias fduentes identificadas, reliminar registros duplicados, estandarizar los detalles de mlos metadatos. La base de datos estÃ¡ capacitada para la web usando Greenstone.}
+
+_ex7t_ [l=es] {Libros del Pasado / Llyfrau o'r Gorffennol}
+
+_ex7d_ [l=es] {Libros del Pasado es una colecciÃ³n en lÃ­nea de libros galeses de interÃ©s cultural nacional y que han estado fuera de impresiÃ³n por mucho tiempo y es probable que no se publiquen nuevamente con medios tradicionales. Los textos se encuentran disponibles en dos formas - imÃ¡genes de las pÃ¡ginas del libro original, junto con un texto electrÃ³nico dentro del cual se puede buscar y  que tambiÃ©n se puede imprimir. Desarrollado por Culturenet Cymru y el consejo galÃ©s de libros, Libros del Pasado es un recurso de acceso libre para todos. El sitio en la web se desarrollarÃ¡ y se expandirÃ¡ en los aÃ±or venideros}
+
+_ex8t_ [l=es] {Red de InformaciÃ³n Filipina de InvestigaciÃ³n, EducaciÃ³n y Gobierno}
+
+_ex8d_ [l=es] {PREGINET es una red nacional de banda ancha que enlaza la academia, la investigaciÃ³n y las instituciones gubernamentales en las Filipinas. El Institute de Ciencia y TecnologÃ­a Avanzadas (ASTI) ha creado una plataforma de una Biblioteca Digital para el uso de las instituciones socias en PREGINET. Han construÃ­do colecciones de la revista Filipina sobre ICT y MicroelectrÃ³nica (PJICTM), cartas de PREGINET y la colecciÃ³n de video ASTI.}
+
+_ex9t_ [l=es] {Ulukau, la biblioteca electrÃ³nica de Hawai}
+
+# This: "Á" is needed to prevent Emacs from getting confused by the following Unicode
+_ex9d_ [l=es] {Ulujau permite disponer de recursos para el uso, enseÃ±anza y mejora del idioma Hawaiano. Tiene cinco colecciones: "Ka HoÊoilina: Puke Pai ÊÅlelo HawaiÊi" (El Legado: Revista de Recursos del Idioma Hawaiano), PeriÃ³dicos Hawaianos, Baibala Hemolele (La Biblia Hawaiana), Diccionarios Hawaianos, y librosa Hawaianos.}
+
+_ex10t_ [l=es] {Biblioteca PÃºblica de Detroit: ColecciÃ³n E. Azalia Hackley}
+
+_ex10d_ [l=es] {La colecciÃ³n de partituras consiste en mÃ¡s de 500 partituras de piezas de los siglos 19 y 20 publicadas entre 1799 y 1922. Los temas de las canciones cubren la vida en las plantaciones del sur de los Estados Unidos a principios del siglo 19, el perÃ­odo de la Guerra Civil, incluyendo abolicionismo, emancipaciÃ³n y reconstrucciÃ³n, mÃºsica popular de principios del siglo 20 y los temas estereotÃ­picos asociados con los trovadores de rostros negros.}
+
+_ex11t_ [l=es] {Indian Institute of Management, Kozhikode}
+
+_ex11d_ [l=es] {El Indian Institute of Management, Kozhikode (<a href="http://www.iimk.ac.in">http://www.iimk.ac.in</a>) es una importantes escuela de gestiÃ³n del Gobierno desde 1996. El Center for Development of Digital Libraries del IIMK utiliza Greenstone para el desarrollo de la colecciÃ³n de su biblioteca digital. La biblioteca digital del IIMK es una verdadera biblioteca multimedia, multi-publicaciÃ³n y multi-formato, con libros, monografÃ­as, informes, revistas, estudios de caso y videos educativos, que forman parte de su creciente colecciÃ³n. La colecciÃ³n de videso es ha sido recientemente aÃ±adida, y utiliza sÃ³lamente software y estÃ¡ndares libres para todos sus procesos de trabajo.}
+
+_ex12t_ [l=es] {Natural Sciences Digital Library, Vietnam National University, Ciudad Ho Chi Minh (en vietnamita)}
+
+_ex12d_ [l=es] {Este sitio contiene dos colecciones Greenstone. "Library and Information Science" contiene artÃ­culos sobre Ciencia de la InformaciÃ³n y BiblioteconomÃ­a del Library Club, FESAL, y Natural Sciences Library Newsletters desde 1998. "Library Equipment" ofrece fotos de equipamiento para bibliotecas presente en algunas bibliotecas de los EE.UU., Singapur, Thailandia y Vietnam. Este sitio es mantenido por la Natural Sciences Library, VNU-HCM.}
+
+_ex13t_ [l=es] {SRM Documentation Centre}
+
+_ex13d_ [l=es] {VersiÃ³n de demostraciÃ³n de un CD-ROM de referencias de literatura sobre metodologÃ­a de investigaciÃ³n social. Las aproximadamente 1.500 referencias se distribuyen en dos subcolecciones: 1958-1990 y 1991-2004. El SRM Documentation Centre es parte del Netherlands
+Institute for Scientific Information Services (NIWI).}
+
+_ex14t_ [l=es] {Bilioteca Nacional de Kygryz}
+
+_ex14d_ [l=es] {El poema Ã©pico Kygryz Manas, un libro raro de la Biblioteca Nacional de Kygryzstan; y una colecciÃ³n de disertaciones y resÃºmenes de cientÃ­ficos de Kygryz sobre temas tales como agricultura, medicina, industria kinera, historia y cultura de la RepÃºlica de Kygryz}
+
+_ex15t_ [l=es] {Red de Bibliotecas Virtuales de Ciencias Sociales de AmÃ©rica Latina y el Caribe - CLACSO}
+
+
+_ex15d_ [l=es] {Acceso libre a 4.000 textos completos de libros, artÃ­culos, ponencias y documentos publicados por la red de 168 centros de investigaciÃ³n en ciencias sociales de 21 paÃ­ses de AmÃ©rica Latina y el Caribe, miembros del Consejo Latinoamericano de Ciencias Sociales (CLACSO). Se puede buscar en el conjunto de las 70 colecciones, o en cada colecciÃ³n en particular. }
+
+# -- Missing translation: _ex16t_
+
+# -- Missing translation: _ex16d_
+
+# -- Missing translation: _ex17t_
+
+# -- Missing translation: _ex17d_
+
+# -- Missing translation: _ex18t_
+
+# -- Missing translation: _ex18d_
+
+# -- Missing translation: _ex19t_
+
+# -- Missing translation: _ex19d_
+
+# -- Missing translation: _ex20t_
+
+# -- Missing translation: _ex20d_
+
+_ex21t_ [l=es] {iArchivos}  # Updated 16-Aug-2006
+
+# -- Missing translation: _ex21d_
+
+# -- Missing translation: _ex22t_
+
+# -- Missing translation: _ex22d_
+
+# -- Missing translation: _ex23t_
+
+# -- Missing translation: _ex23d_
+
+# -- Missing translation: _ex24t_
+
+# -- Missing translation: _ex24d_
+
+# -- Missing translation: _ex25t_
+
+# -- Missing translation: _ex25d_
+
+# -- Missing translation: _ex26t_
+
+# -- Missing translation: _ex26d_
+
+# -- Missing translation: _ex27t_
+# -- Missing translation: _ex27d_
+
+# -- Missing translation: _ex28t_
+
+# -- Missing translation: _ex28d_
+
+# -- Missing translation: _ex29t_
+
+# -- Missing translation: _ex29d_
+
+# -- Missing translation: _ex30t_
+
+# -- Missing translation: _ex30d_
+
+# -- Missing translation: _ex31t_
+
+# -- Missing translation: _ex31d_
+
+# -- Missing translation: _ex32t_
+
+# -- Missing translation: _ex32d_
+
+
+
+#######################################################################
+package support
+
+_t109_ [l=es] {Soporte de Greenstone}
+
+_tsupportintro_ [l=es] {Dsea aprender un poco mÃ¡s sobre Greenstone?. Tiene problemas co la instalaciÃ³n o con la construcciÃ³n de colecciones?. Hay muchas fuentes de ayuda a las que usted puede acudir
+}
+
+_twikih_ [l=es] {DocumentaciÃ³n Wiki de Greenstone}  # Updated 16-Aug-2006
+# -- Missing translation: _twikib_
+_tfaqh_ [l=es] {Lista de Preguntas frecuentes (FAQ)}
+_tfaqb_ [l=es] {EL FAQ contiene una lista de preguntas comunes acerca de Greenstone, incluyendo cÃ³mo onseguir el software, la instalaciÃ³n y puesta en marcha de Greenstone y la construcciÃ³n de colecciones}
+
+_tarchh_ [l=es] {Archivos de correo de Greesntone}
+_tarchb_ [l=es] {Es una colecciÃ³n Greenstone que contiene todas las preguntas y respuestas enviadas a las dos listas de correo de Greenstone. Buscar en esta colecciÃ³n es una buena forma de encontrar respuestas a preguntas comunes que no hayan entrado aun a la lsiat FAQ. Se actualiza regularmente.}
+
+_tmanualh_ [l=es] {DocumentaciÃ³n de Greenstone}
+_tmanualb_ [l=es] {Hay varios manuales y guias que vienen con Greenstone. Este paquete suministra vÃ­nculos a trodos ellos y muchos en varios idiomas.}
+
+_tdlbookh_ [l=es] {CÃ³mo construir una biblioteca digital
+}
+_tdlbookb_ [l=es] {QuÃš es una biblioteca digital? A quÃ© se parece? De dÃ³nde proviene la informaciÃ³n? CÃ³mo se pone toda junta? Por donde se empieza? Es un libro que que contesta estas preguntas de una manera simple y directa, con un fuerte sabor de "cÃ³mo hacerlo". Este libro tambiÃ©n describe el software Greenstone}
+
+_tmaillisth_ [l=es] {Listas de correo de Greenstone}
+
+
+_t104_ [l=es] {Hay dos listas principales de correo orientadas en primer lugar a discusiones sobre el software de la biblioteca digital Greenstone. Los usuarios activos de Greenstone deben considerar el ingreso a una o ambas Ã±istas y contribuir a la discusiÃ³n.<b>Favor consultar las otras fuentes de informaciÃ³n</b>, en particular 
+<a href="http://www.nzdl.org/gsarchives">mailing list archives</a>, <b>antes de enviar una pregunta a una de las listas</b>.
+}
+
+_t105_ [l=es] {Lista de usuarios de Greenstone}
+
+_t106_ [l=es] {Esta lista es para discuciones generales acerca de Greenstone. Para enviar un mensaje a esta lista, dirÃ­jala a  <a
+href="mailto:greenstone-users@list.scms.waikato.ac.nz">greenstone-users@list.scms.waikato.ac.nz</a>. }
+
+_t107_ [l=es] {Lista de desarrolladores de Greenstone}
+
+_t108_ [l=es] {Esta lista es para discusiones mÃ¡s tÃ©cnicas entre personas que desarrollan o modifican Greenstone. Para enviar un mesaje a esta lista, dirÃ­jalo a  <a
+href="mailto:greenstone-devel@list.scms.waikato.ac.nz">greenstone-devel@list.scms.waikato.ac.nz</a>. <strong>Note:</strong> debe suscribirsea la lista antes de enviar correos}
+
+_tsuppformh_ [l=es] {Forma de soporte basada en la web}
+_tsuppformb_ [l=es] {<b>As a last resort</b>,si usted no es capaz de usar las listas de correo, use esta forma de soporte basada en la web para enviar una pregunta al equipo de soport de Greenstone}
+
+_ttrainingcourseh_ [l=es] {Entrenamiento en Greenstone}
+
+# -- Missing translation: _ttrainingcourse_
+
+
+######################################################################
+# 'preferences' page
+package preferences
+######################################################################
+
+
+#------------------------------------------------------------
+# text macros
+#------------------------------------------------------------
+
+_textpresentationprefs_ [l=es] {Preferencias de presentaciÃ³n}
+_textlanguage_ [l=es] {Idioma de la interfaz: }
+_textencoding_ [l=es] {CodificaciÃ³n: }
+_textformat_ [l=es] {Formato de la interfaz: }
+_textgraphical_ [l=es] {GrÃ¡fico}
+_texttextual_ [l=es] {Textual}
Index: /other-projects/trunk/greenorg/macros/style.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/style.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/style.dm	(revision 14149)
@@ -0,0 +1,82 @@
+#######################################################################
+# PAGE STYLES 
+#######################################################################
+
+package Style
+
+# to use this style system output
+# _header_
+# all your page content, then
+# _footer_
+
+# use the page parameter 'style' to choose the appropriate style
+
+# the style system uses
+# _pagetitle_  - what gets displayed at the top of the browser window
+# _pagescriptextra_ - any extra javascript you want included in the header
+# _pagebannerextra_ - anything extra you want displayed in the page banner
+# _pagefooterextra_ - anything extra you want displayed in the footer
+
+# defaults for the above macros
+_pagetitle_ {_collectionname_}
+_pagescriptextra_ {}
+_pagebannerextra_ {}
+_pagefooterextra_ {}
+
+# it also relies on lots of Globals, the most important of these are:
+# _cookie_ - put in the cgi header
+# _globalscripts_ - javascript stuff
+# _httpiconchalk_ - the image down the left of the page
+# _imagecollection_
+# _imagehome_
+# _imagehelp_
+# _imagepref_
+# _imagethispage_
+# _linkotherversion_
+
+
+_header_ {
+<html>
+<head>
+<title>Greenstone Digital Library Software</title>
+<link rel="stylesheet" type="text/css" href="_httpimg_/style.css">
+<script src="_httpimg_/scripts.js">
+</script>
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1209851-1";
+urchinTracker();
+</script>
+<script>
+<!--
+_pagescriptextra_
+// -->
+</script>
+</head>
+
+<body background="_httpimg_/chalk.gif" class="default" bgcolor="#ffffff">
+
+<table border="0" cellspacing="0" cellpadding="0" width="_pagewidth_" class="default">
+<tr><td><img src="_httpimg_/spacer.gif" width="80"></td><td>
+
+<table width="_pagewidth_">
+<tr valign=top>
+<td><a href="_httppagex_(home)"><img src="_httpimg_/gsdlhead.gif" border="0"></a></td>
+<td align=right>_javalinks_</td>
+</tr>
+</table>
+
+<p>
+<nobr>
+_imagedownload_<img src="_httpimg_/tspace.gif" width="25" height="17">_imageexamples_<img src="_httpimg_/tspace.gif" width="25" height="17">_imagedocs_<img src="_httpimg_/tspace.gif" width="25" height="17">_imagefaq_<img src="_httpimg_/tspace.gif" width="25" height="17">_imagesupport_
+</nobr>
+</p>
+}
+
+_footer_ {
+</td></tr></table>
+<p>&nbsp;</p>
+</body>
+</html>
+}
Index: /other-projects/trunk/greenorg/macros/supportform.dm
===================================================================
--- /other-projects/trunk/greenorg/macros/supportform.dm	(revision 14149)
+++ /other-projects/trunk/greenorg/macros/supportform.dm	(revision 14149)
@@ -0,0 +1,341 @@
+package supportform
+
+_content_ {
+
+_pageheading_(_support:t109_)
+
+_tsupportformintro_
+<p>
+
+<form name="support_form" method="post" action="/cgi-bin/support_form.pl">
+
+<table width="100%" border="0" cellpadding="0" cellspacing="0" class="default">
+<tr> 
+<td colspan="2" align="left"><span class="subheading">_t113_</span></td>
+</tr>
+<tr valign="top"> 
+<td>_t114_:</td>
+<td> 
+<input type="text" name="name" size="40">
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t115_:</td>
+<td> 
+<input type="text" name="email" size="40">
+</td>
+</tr>
+<tr> 
+<td colspan="2" align="left"><span class="subheading">_t116_</span></td>
+</tr>
+<tr valign="top"> 
+<td>_t117_:</td>
+<td> 
+<select name="operating_system">
+<option value="linux">_t126_</option>
+<option value="macOSX">Mac OS X</option>
+<option value="winXP" selected>_t123_</option>
+<option value="win2000">_t122_</option>
+<option value="winme">_t120_</option>
+<option value="winnt4">_t121_</option>
+<option value="win98">_t119_</option>
+<option value="win95">_t118_</option>
+<option value="win311">_t124_</option>
+<option value="win31">_t125_</option>
+<option value="other">_t127_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t128_:</td>
+<td> 
+<input type="text" name="other_os" size="40">
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t129_:</td>
+<td> 
+<input type="text" name="cpu" size="40">
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t130_:</td>
+<td> 
+<input type="text" name="ram" size="10">
+</td>
+</tr>
+<tr> 
+<td colspan="2" class="spacer"> 
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t131_:</td>
+<td> 
+<select name="browser">
+<option value="ie6" selected>_t138_</option>
+<option value="ie5">_t137_</option>
+<option value="ie4">_t136_</option>
+<option value="mozilla">_t135_</option>
+<option value="netscape6">_t134_</option>
+<option value="netscape4.5">_t133_</option>
+<option value="netscape4">_t132_</option>
+<option value="other">_t127_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t139_:</td>
+<td> 
+<input type="text" name="other_browser" size="40">
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t140_</td>
+<td><select name="isp_browser">
+<option value="no" selected>_t141_</option>
+<option value="yes">_t142_</option>
+<option value="dont_know">_t143_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t144_</td>
+<td><select name="proxy">
+<option value="no" selected>_t141_</option>
+<option value="yes">_t142_</option>
+<option value="dont_know">_t143_</option>
+</select>
+</td>
+</tr>
+<tr> 
+<td colspan="2" class="spacer"> 
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t145_:</td>
+<td> 
+<select name="server">
+<option value="not_applicable" selected>_t146_</option>
+<option value="apache1.3">_t147_</option>
+<option value="apache2.0">_t148_</option>
+<option value="iis4.0">_t149_</option>
+<option value="iis5.0">_t150_</option>
+<option value="pws">_t151_</option>
+<option value="other">_t127_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t152_:</td>
+<td> 
+<input type="text" name="other_server" size="40">
+</td>
+</tr>
+<tr> 
+<td colspan="2" align="left"><span class="subheading">_t153_</span></td>
+</tr>
+<tr valign="top"> 
+<td>_t154_:</td>
+<td> 
+<select name="gsdl_version">
+<option value="CD-ROM">_t155_</option>
+<option value="2.70" selected>2.70</option>
+<option value="2.63">2.63</option>
+<option value="2.62">2.62</option>
+<option value="2.61">2.61</option>
+<option value="2.60">2.60</option>
+<option value="2.53">2.53</option>
+<option value="2.52">2.52</option>
+<option value="2.51">2.51</option>
+<option value="2.50">2.50</option>
+<option value="2.41">2.41</option>
+<option value="2.40a">2.40a</option>
+<option value="2.40">2.40</option>
+<option value="2.39">2.39</option>
+<option value="2.38">2.38</option>
+<option value="2.37">2.37</option>
+<option value="2.36">2.36</option>
+<option value="2.35">2.35</option>
+<option value="dont_know">_t143_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t156_:</td>
+<td> 
+<select name="gsdl_type">
+<option value="local_library" selected>_t157_</option>
+<option value="web_library">_t158_</option>
+<option value="dont_know">_t143_</option>
+</select>
+</td>
+</tr>
+<tr> 
+<td colspan="2" align="left"><span class="subheading">_t159_</span></td>
+</tr>
+<tr valign="top"> 
+<td>_t160_:</td>
+<td> 
+<select name="problem_type">
+<option value="question" selected>_t161_</option>
+<option value="problem/error">_t162_</option>
+<option value="suggested_enhancement">_t163_</option>
+<option value="other">_t164_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t165_</td> 
+<td><select name="problem_reproduce">
+<option value="not_applicable" selected>_t146_</option>
+<option value="yes">_t142_</option>
+<option value="no">_t141_</option>
+</select>
+</td>
+</tr>
+<tr valign="top"> 
+<td>_t166_:</td>
+<td> 
+<input type="text" name="short_description" size="40">
+</td>
+</tr>
+<tr valign="top"> 
+<td colspan="2">_t167_:<br />
+<i>_t168_</i>
+<br />
+<textarea cols="60" rows="30" name="long_description" wrap></textarea>
+</td>
+</tr>
+<tr valign="top">
+<td colspan="2">
+<input type="submit" name="submit">
+</td>
+</tr>
+</table>
+</form>
+
+}
+
+
+_tsupportformintro_ {
+To send a query to the Greenstone support staff, please fill in the form
+below and click the "Submit Query" button to submit the query. Please fill in
+the form as fully as possible to aid our staff in giving the best possible
+service.
+
+}
+_t113_ {PERSONAL INFORMATION}
+
+_t114_ {Name}
+
+_t115_ {E-mail address}
+
+_t116_ {SYSTEM INFORMATION}
+
+_t117_ {Operating System}
+
+_t118_ {Windows 95}
+
+_t119_ {Windows 98}
+
+_t120_ {Windows ME}
+
+_t121_ {Windows NT 4}
+
+_t122_ {Windows 2000}
+
+_t123_ {Windows XP}
+
+_t124_ {Windows 3.11}
+
+_t125_ {Windows 3.1}
+
+_t126_ {Linux}
+
+_t127_ {Other (please specify below)}
+
+_t128_ {Other OS}
+
+_t129_ {CPU (type and speed)}
+
+_t130_ {Memory (RAM) in MB}
+
+_t131_ {Web browser}
+
+_t132_ {Netscape 4}
+
+_t133_ {Netscape 4.5}
+
+_t134_ {Netscape 6}
+
+_t135_ {Mozilla}
+
+_t136_ {Internet Explorer 4}
+
+_t137_ {Internet Explorer 5}
+
+_t138_ {Internet Explorer 6}
+
+_t139_ {Other web browser}
+
+_t140_ {Was your browser provided by your internet service provider?}
+
+_t141_ {no}
+
+_t142_ {yes}
+
+_t143_ {don't know}
+
+_t144_ {Is your browser configured to use a proxy?}
+
+_t145_ {Web server}
+
+_t146_ {not applicable}
+
+_t147_ {Apache 1.3}
+
+_t148_ {Apache 2.0}
+
+_t149_ {Microsoft IIS 4.0}
+
+_t150_ {Microsoft IIS 5.0}
+
+_t151_ {Microsoft PWS}
+
+_t152_ {Other server}
+
+_t153_ {GREENSTONE INFORMATION}
+
+_t154_ {Version}
+
+_t155_ {CD-ROM distribution}
+
+_t156_ {Installation type}
+
+_t157_ {local library}
+
+_t158_ {web library}
+
+_t159_ {PROBLEM DESCRIPTION}
+
+_t160_ {Problem type}
+
+_t161_ {question}
+
+_t162_ {problem/error}
+
+_t163_ {suggested enhancement}
+
+_t164_ {other}
+
+_t165_ {Can the problem be reproduced at will?}
+
+_t166_ {Short description}
+
+_t167_ {Long description}
+
+_t168_ {
+(If you are reporting a problem, please go into as much detail as possible.
+Make sure you describe all steps leading up to the problem and include any
+relevant URLs.)
+}
